我是使用实现ApplicationContextAware接口封装一个工具类来初始化一个applicationContext来使用的,项目启动是也看到初始化成功了,applicationContext是有值的,但在new的对象中使用时却报null?不知道为什么,请大神指点,下面是代码实现:
public class BeanContext implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) throws BeansException {
return (T)applicationContext.getBean(name);
}
public static <T> T getBean(Class<T> clz) throws BeansException {
return applicationContext.getBean(clz);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
BeanContext.applicationContext = applicationContext;
}
}
public class SyncDataTask extends AbstractTask {
private SyncDataParameters syncDataParameters;
private Job job;
private DataSource dataSource;
private BaseDataSource baseDataSource;
/**
-
task dir
*/
private String taskDir;private ShellCommandExecutor shellCommandExecutor;
/**
-
process database access
*/
private ProcessDao processDao;private DataxJsonUtil dataxUtil = BeanContext.getBean(DataxJsonUtil.class);
}
beanContext类上是有component注解的,syncDataTask是普通的类,没有交给spring管理,DataxJsonUtil是spring管理的类