【问题标题】:How to change the XML to Configuration Classes?如何将 XML 更改为配置类?
【发布时间】:2012-10-09 11:10:11
【问题描述】:

对不起,我有点讨厌英语。

请帮助我。我有一个问题。
我想将 XML 更改为 Java 类以供 @Configuration 和 @Bean 使用。
我该怎么办??

以下是我想更改的。
我不知道“module-context.xml”,尤其是...
只是我想知道。

launch-context.xml

<import resource="classpath:/META-INF/spring/module-context.xml" />

<bean id="jobOperator"
    class="org.springframework.batch.core.launch.support.SimpleJobOperator"
    p:jobLauncher-ref="jobLauncher" p:jobExplorer-ref="jobExplorer"
    p:jobRepository-ref="jobRepository" p:jobRegistry-ref="jobRegistry" />
<bean id="jobExplorer"
    class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"
    p:dataSource-ref="SpringDataSource" />
<bean id="jobRegistry"
    class="org.springframework.batch.core.configuration.support.MapJobRegistry" />
<bean
    class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
    <property name="jobRegistry" ref="jobRegistry" />
</bean>
<bean id="jobLauncher"
    class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
    <property name="jobRepository" ref="jobRepository" />
</bean>
<bean id="jobRepository"
    class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"
    p:dataSource-ref="SpringDataSource" p:transactionManager-ref="springTransactionManager" />

<bean id="placeholderProperties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:batch.properties" />
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="1" />
</bean>

<bean id="SpringDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${batch.jdbc.driver}" />
    <property name="url" value="${batch.jdbc.url}" />
    <property name="username" value="${spring.batch.jdbc.user}" />
    <property name="password" value="${spring.batch.jdbc.password}" />
</bean>
<bean id="springTransactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
    lazy-init="true">
    <property name="dataSource" ref="SpringDataSource" />
</bean>

module-context.xml

<job id="job1" xmlns="http://www.springframework.org/schema/batch"
    incrementer="jobParametersIncrementer">
    <step id="simple-step" parent="simpleStep">
        <tasklet>
            <chunk reader="exampleReader" writer="exampleWriter" />
        </tasklet>
    </step>
</job>
<bean id="exampleReader"
    class="jp.co.app.cm.nochunk.ExampleItemReader" />
<bean id="exampleWriter"
    class="jp.co.app.cm.nochunk.ExampleItemWriter" />
<bean id="simpleStep"
    class="org.springframework.batch.core.step.item.SimpleStepFactoryBean"
    abstract="true">
    <property name="transactionManager" ref="springTransactionManager" />
    <property name="jobRepository" ref="jobRepository" />
    <property name="startLimit" value="100" />
</bean>

请告诉我一个人?

【问题讨论】:

    标签: spring configuration annotations spring-batch cglib


    【解决方案1】:

    翻译前四个bean,这应该足以让您开始并掌握想法:

    @Configuration
    public class Spring {
    
        @Bean
        public MapJobRegistry mapJobRegistry() {
            return new MapJobRegistry();
        }
    
        @Bean
        public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor() {
            JobRegistryBeanPostProcessor pp = new JobRegistryBeanPostProcessor();
            pp.setJobRegistry(mapJobRegistry());
            return pp;
        }
    
        @Bean
        public SimpleJobLauncher simpleJobLauncher() {
            SimpleJobLauncher jl = new SimpleJobLauncher();
            jl.setJobRepository(jobRepository().getObject());
            return jl;
        }
    
        @Bean
        public JobRepositoryFactoryBean jobRepositoryFactoryBean() {
            JobRepositoryFactoryBean fb = new JobRepositoryFactoryBean();
            fb.setDataSource(springDataSource());
            fb.setTransactionManager(springTransactionManager());
            return fb;
        }
    
    }
    

    【讨论】:

    • 感谢您的回复,托马斯。我试了一下。但我仍然无法解决这个问题。如何实现 tag ?如果你能告诉我,请给我看那部分示例代码。
    • @user1702995:好问题!不知道 Spring Batch 是否支持 Java 配置。
    【解决方案2】:

    我知道这是一篇旧帖子,但以防万一有人通过 Google 找到此帖子。
    Spring Batch 2.2开始版本新增Java配置。

    在 2.2.0 之前,配置作业的唯一选项是通过 XML(或者 通过批量 DSL 或手动)。但是,在 2.2.0 中,基于 Java 已添加配置作为定义 Spring Batch 作业的一种方式。到 支持这个新的配置选项、注解和构建器 已添加类。

    http://docs.spring.io/spring-batch/2.2.x/reference/html/whatsNew.html#whatsNewJavaConfiguration http://docs.spring.io/spring-batch/2.2.x/reference/html/configureJob.html#javaConfig

    您可以在此处找到示例:
    https://github.com/spring-projects/spring-batch/tree/2.2.x/spring-batch-samples/src/main/java/org/springframework/batch/sample/config

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2015-07-22
      • 2018-07-19
      相关资源
      最近更新 更多