spring批处理:使用AutomaticJobRegistrar注入主应用程序上下文@Component

时间:2014-06-23 10:10:10

标签: spring spring-batch

我正在尝试将主应用程序上下文中定义的一些@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?

感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

您是否为每项工作激活了context:annotation-config

如果为每个Job创建了一个新的applicationcontext,你需要激活它,否则就不会发生注释处理(包括@Autowired)。

&#39;上下文:组分扫描&#39;也激活了上下文:annotation-config&#39;所以这可能是@Autowired激活它的原因。