5

我有一个弹簧集成+批处理应用程序。

该集成用于读取带有入站通道适配器的文件并调用批处理作业。jobRepository 定义自:org.springframework.batch.core.repository.support.JobRepositoryFactoryBean

事务管理器是 org.springframework.orm.jpa.JpaTransactionManager。

当应用程序启动时,我不知道为什么,但我读到了这种奇怪的配置:

[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [*] with attribute [PROPAGATION_REQUIRED,ISOLATION_DEFAULT]
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [create*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE]
[5860] [2012-03-12 17:40:47,267] D [main] [org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource] Adding transactional method [getLastJobExecution*] with attribute [PROPAGATION_REQUIRES_NEW,ISOLATION_SERIALIZABLE]

似乎默认情况下,每个作业方法都配置了隔离 SERIALIZABLE,但我没有在任何地方设置它。知道如何将默认隔离级别设置为 ISOLATION_DEFAULT 吗?

4

1 回答 1

4

默认情况下它是 SERIALIZABLE 以防止在 2 个或更多盒子上同时执行相同的作业实例。如果这不是您关心的问题,您可以放松一下。

http://static.springsource.org/spring-batch/reference/html/configureJob.html#txConfigForJobRepository

isolation-level-for-create

属性控制 create* 和 getLastJobExecution* 方法的传播

于 2012-03-12T18:38:19.793 回答