我有一个spring mvc web应用程序,在父上下文(spring-application-context.xml)中注册了FormattingConversionServiceFactoryBean。
在我的父上下文中,我有一个FormattingConversionServiceFactoryBean,定义如下......
@Component("applicationConversionService")
public class ApplicationConversionServiceFactoryBean extends
FormattingConversionServiceFactoryBean {
它在我的父上下文中加载如下......
<context:component-scan base-package="com.myCompany.reporting.converter" />
我在我的child / servlet上下文中使用它,如下所示......
<mvc:annotation-driven conversion-service="applicationConversionService"/>
然后在我的控制器中我可以使用...
抓住这个bean@Autowired
private ApplicationConversionServiceFactoryBean applicationConversionService;
到目前为止一切顺利。
我现在有一个案例,我想在我的一个Spring批处理作业bean中使用这个转换工厂服务bean。作业bean在spring批处理管理控制台批处理作业覆盖文件中定义。我试图将转换服务bean从我的父上下文自动装入我的jdbc writer。编译工作,但自动装配的转换服务在运行时始终为null。这是我如何自动装配。
public class BulletinBarUpdateItemWriter extends AbstractDao implements ItemWriter<Map<String,String>> {
@Autowired
private ApplicationConversionServiceFactoryBean applicationConversionService;
这是否与Spring批处理管理bean在不同的上下文中有关,这与我的web.xml中定义了spring batch admin servlet的方式有关?见下文......
<servlet>
<servlet-name>Batch Servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/org/springframework/batch/admin/web/resources/servlet-config.xml,
classpath*:/org/springframework/batch/admin/web/resources/webapp-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
在我的spring批处理作业bean中访问conversionService bean的正确方法是什么?我想在我的Spring批处理作业bean中使用它,就像我在控制器中一样。
如前所述,我的Jdbc writer bean在spring batch admin batch jobs目录下的job.xml文件中定义,如下所示。
<bean id="bulletinBarUpdateItemWriter"
class="com.mycompany.reporting.dao.itemwriter.BulletinBarUpdateItemWriter"
parent="abstractCustDbJdbcDao"/>
答案 0 :(得分:0)
我找到了答案。我需要将以下内容添加到我的job.xml文件
<!-- ====================================================================== -->
<!-- activate annotations for beans already registered in the -->
<!-- application context. -->
<!-- ====================================================================== -->
<context:annotation-config/>
在尝试将其放入我的作业文件之前,我没有成功地将它放在spring批处理管理覆盖文件中。将其移动到作业文件后,正在拾取注释。
非常奇怪,我想找到答案为什么你要做很多我不想做的挖掘工作。希望这有助于其他人。