Spring-quartz2.2.1 关于bean的注入 (spring data jpa)

发布于 2021-11-27 09:43:15 字数 778 浏览 764 评论 5

虽然解决了23行中的treeService 的注入问题,但是调用其方法getOneById时,

treeRepository又是null,怎么也注入不进,

如果是只在execute()方法中打印一句话,定时任务调用完全没有问题(这根本没有什么意义)

求大神指点!!!!!!!!!




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

柠檬 2021-12-03 14:52:47

那持久层怎么办呢,treeRepository 怎么得到才行啊,那是一个interface

狠疯拽 2021-12-03 12:54:48

回复
我用的是spring+spring mvc+mybatis,持久层也是interface。用上面的方法也能在service里面获取到bean对象

断爱 2021-12-03 08:50:40

其实就是,数据持久层还是保持原样,Quart容器中Service采用手动注册进去,一切就完美了。

疾风者 2021-12-02 15:05:00

1、spring的容器和quartz容器是两个独立的容器,quartz中获取spring的bean,需要自己写个工具类实现spring的ApplicationContextAware接口

quartz的task中获取bean:

UserService userService = (UserService)ApplicationContextHelper.getBean("userService");

其中,getBean("userService")中的userService为UserService.java类的注解@Service("userService")中的name。

2、ApplicationContext.java

package com.web.util;
import org.springframework.beans.BeansException;    
import org.springframework.context.ApplicationContext;    
import org.springframework.context.ApplicationContextAware;    
/**  
 * 获取spring容器中的bean
 */    
public class ApplicationContextHelper implements ApplicationContextAware {    
    private static ApplicationContext appCtx;    
    /**  
     * 此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。  
     * @param applicationContext ApplicationContext 对象.  
     * @throws BeansException  
     * @author wangdf 
     */    
    @Override    
    public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {    
        appCtx = applicationContext;    
    }  
      
    /** 
     * 获取ApplicationContext 
     * @return 
     * @author wangdf 
     */  
    public static ApplicationContext getApplicationContext(){  
        return appCtx;  
    }  
      
    /**  
     * 获取bean对象 
     * @param beanName bean的名字  
     * @return 返回一个bean对象  
     * @author wangdf 
     */    
    public static Object getBean( String beanName ) {    
        return appCtx.getBean( beanName );    
    }    
}

风苍溪 2021-12-02 03:26:50

贴出你的配置文件,Spring-Quartz中Spring容器和Quartz容器是独立的,需要手动注入的。 

<!-- For times when you need more complex processing, passing data to the scheduled job -->  
    <bean name="firstComplexJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
        <property name="jobClass" value="com.ideal.job.FirstScheduledJob" />  
        <property name="jobDataMap">  
            <map>  
                <entry key="anotherBean" value-ref="anotherBean" />
                <entry key="commonService" value-ref="commonService" />  
            </map>  
        </property>  
        <property name="durability" value="true" />  
    </bean>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文