我正在尝试将主应用程序上下文中定义的一些@Service
/ @Repository
bean注入AutomaticJobRegistrar
加载的某些作业中。
<bean class="org.springframework.batch.core.configuration.support.AutomaticJobRegistrar">
<property name="applicationContextFactories">
<bean class="org.springframework.batch.core.configuration.support.ClasspathXmlApplicationContextsFactoryBean">
<property name="resources" value="classpath*:/META-INF/jobs/*Job.xml" />
</bean>
</property>
<property name="jobLoader">
<bean class="org.springframework.batch.core.configuration.support.DefaultJobLoader">
<property name="jobRegistry" ref="jobRegistry" />
</bean>
</property>
</bean>
在我的@Autowired
实现类中使用ItemWriter
不会注入我的服务bean。
我必须在每个*Job.xml
内启用组件扫描或声明每个bean以使注入工作,但注入的类与主应用程序上下文使用的类不同。
如何获得在主应用程序上下文中声明的相同实例bean?
感谢您的任何建议
答案 0 :(得分:1)
您是否为每项工作激活了context:annotation-config
?
如果为每个Job创建了一个新的applicationcontext,你需要激活它,否则就不会发生注释处理(包括@Autowired)。
&#39;上下文:组分扫描&#39;也激活了上下文:annotation-config&#39;所以这可能是@Autowired激活它的原因。