Spring仅自动装配其创建的组件。您正在调用新的TaskJob(),Spring不知道该对象,因此不会进行自动装配。
解决方法是,可以直接调用应用程序上下文。首先获取应用程序上下文的句柄。这可以通过为应用程序上下文本身添加@Autowire来完成。
@Autowired
private ApplicationContext applicationContext;
创建TaskJob时,要求应用程序上下文进行自动装配。
TaskJob taskJob = new TaskJob(name, source);
applicationContext.getAutowireCapablebeanfactory().autowireBean(taskJob);
另外,如果您有任何带@postconstruct
注释的方法需要触发,则可以调用initializeBean()
applicationContext.getAutowireCapablebeanfactory().initializeBean(taskJob, null);