Почему уровень изоляции по умолчанию для каждого метода (для пакетного задания пружины) для интеграции пружин и пакетной транзакции установлен на SERIALIZABLE? - PullRequest
5 голосов
/ 12 марта 2012

У меня есть пружинная интеграция + пакетное приложение.

Интеграция используется для чтения файла с помощью адаптера входящего канала и вызова пакетного задания. 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?

1 Ответ

4 голосов
/ 12 марта 2012

По умолчанию это SERIALIZABLE, чтобы предотвратить одновременное выполнение одного и того же экземпляра задания на 2 или более блоках.Вы можете расслабиться, если это вас не касается.

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

Атрибут

isolation-level-for-create

управляет распространением методов create * и getLastJobExecution *

...