Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring批处理作业bean可以延迟初始化吗?_Java_Spring_Spring Batch_Lazy Initialization - Fatal编程技术网

Java Spring批处理作业bean可以延迟初始化吗?

Java Spring批处理作业bean可以延迟初始化吗?,java,spring,spring-batch,lazy-initialization,Java,Spring,Spring Batch,Lazy Initialization,在Spring中,可以将bean配置为延迟初始化。Spring批处理作业也是(Spring管理的)bean。也就是说,当我配置如下内容时 <sb:job id="dummyJob" job-repository="jobRepository"> <sb:step id="dummyStep"> <sb:tasklet ref="dummyTasklet" /> </sb:step> </sb:job>

在Spring中,可以将bean配置为延迟初始化。Spring批处理作业也是(Spring管理的)bean。也就是说,当我配置如下内容时

<sb:job id="dummyJob" job-repository="jobRepository">
    <sb:step id="dummyStep">
        <sb:tasklet ref="dummyTasklet" />
    </sb:step>
</sb:job>

实际上,我在Spring容器中配置了一个新的(
Job
-typed)bean

我的问题是我真的希望我的
作业
bean被延迟初始化。由于它们是常规的Spring管理bean,我希望我可以指示Spring上下文使它们变懒。这是因为我有大量的bean,在许多情况下,在基于Spring的应用程序的一次执行期间,我只运行一个作业


但是在我的
配置中没有
lazy init
属性可以设置。有什么方法可以强制延迟初始化吗?如果我用
默认的lazy init=“true”
配置我的
根目录,这是否也适用于
作业
bean?

这里有两个选项:

  • 手动配置作业。这将允许您使用Spring公开的常规lazy init属性
  • 使用Spring批次3中现在提供的JobScope。Spring第3批很快就可以使用了,但是JobScope在上一个里程碑中就可以使用了

  • 这里有两个选项:

  • 手动配置作业。这将允许您使用Spring公开的常规lazy init属性
  • 使用Spring批次3中现在提供的JobScope。Spring第3批很快就可以使用了,但是JobScope在上一个里程碑中就可以使用了
  • 我只是想详细说明一下答案。 我有一个类似的需求来初始化作业存储库。 我正在使用SpringBatch 2.1.9。 以下是我的工作

    <bean id="jobRepository"
         class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"
         lazy-init="true">
            <property name="dataSource" ref="jobDataSource"/>
            <property name="transactionManager" ref="jobTransactionManager"/>
    </bean>
    
    
    
    注意我遇到的一个陷阱:不要设置数据库类型,即避免以下情况:

    <property name="databaseType" value="SQLSERVER"/>
    
    
    
    这是不好的,因为它禁用了数据库类型的自动发现,并破坏了我在H2上工作的JUnits。

    只是为了详细说明答案。 我有一个类似的需求来初始化作业存储库。 我正在使用SpringBatch 2.1.9。 以下是我的工作

    <bean id="jobRepository"
         class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"
         lazy-init="true">
            <property name="dataSource" ref="jobDataSource"/>
            <property name="transactionManager" ref="jobTransactionManager"/>
    </bean>
    
    
    
    注意我遇到的一个陷阱:不要设置数据库类型,即避免以下情况:

    <property name="databaseType" value="SQLSERVER"/>
    
    
    

    这很糟糕,因为它禁用了数据库类型的自动发现,并破坏了在H2上工作的JUnits。

    1。您的意思是将其配置为常规的
    ,其类将是
    作业的实现者之一?这种方法会不会丢失Spring批处理框架在“直接”配置作业时执行的某种幕后工作?2.有关于这方面的文件吗?我找不到相关的东西。作业范围是否仅适用于微线程、读卡器、处理器和写入程序?或者它也适用于作业bean?我需要后者。是的,我就是这个意思。请记住,名称空间只是为您完成工作……工作仍在进行中,没有任何东西可以阻止您自己完成它。2.说得好。无法在命名空间中将作业设置为作业范围。只有其他的豆子。您的意思是将其配置为常规的
    ,其类将是
    作业的实现者之一?这种方法会不会丢失Spring批处理框架在“直接”配置作业时执行的某种幕后工作?2.有关于这方面的文件吗?我找不到相关的东西。作业范围是否仅适用于微线程、读卡器、处理器和写入程序?或者它也适用于作业bean?我需要后者。是的,我就是这个意思。请记住,名称空间只是为您完成工作……工作仍在进行中,没有任何东西可以阻止您自己完成它。2.说得好。无法在命名空间中将作业设置为作业范围。只是其他的豆子。