springboot解决quartz的Job类中使用注解Service为null的办法一

使用ApplicationContextHelper工具类引用Service访问数据库

@Component
public class ApplicationContextHelper implements ApplicationContextAware {    
    private static ApplicationContext appCtx;    
    /**  
     * 此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。  
     * @param applicationContext ApplicationContext 对象.  
     * @throws BeansException  
     * @author chenchen 
     */    
    @Override    
    public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {    
        appCtx = applicationContext;    
    }  
      
    /** 
     * 获取ApplicationContext 
     * @return 
     * @author chenchen 
     */  
    public static ApplicationContext getApplicationContext(){  
        return appCtx;  
    }  
      
    /**  
     * 这是一个便利的方法,帮助我们快速得到一个BEAN  
     * @param beanName bean的名字  
     * @return 返回一个bean对象  
     * @author chenchen 
     */    
    public static Object getBean( String beanName ) {    
        return appCtx.getBean( beanName );    
    }

}

在XXJob任务类中,用ApplicationContextHelper.getBean("menuService")方法

springboot解决quartz的Job类中使用注解Service为null的办法一_第1张图片

注意,service类注解@Service一定要加名称

springboot解决quartz的Job类中使用注解Service为null的办法一_第2张图片

 

 

 

你可能感兴趣的:(java)