Учитывая следующий сценарий: У меня есть приложение работает с весны Ботинок @SpringBootApplication
и настройки с Spring Data источника данных JPA в application.properties
:Spring Data JPA транзакции пользовательский уровень изоляции
spring.datasource.url=jdbc:mysql://foo.bar.com:12345
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
и никаких дополнительных Java/XML конфиги.
У меня есть несколько услуг:
@Service
public class ProjectServiceImpl implements ProjectService {
@Autowired
ProjectRepository projectRepository;
@Override
@Transactional(isolation = Isolation.SERIALIZABLE)
public Project save(Project project) {
// there might be some additional logic here, besides the action on repository
return projectRepository.save(project);
}
}
и хранилищами:
@Repository
public interface ProjectRepository extends CrudRepository<Project, Long> {}
Как это в приведенном выше коде, я нашел себя в потребности, скажем, SERIALIZABLE
уровень изоляции из-за к приложению расширяется горизонтально и иногда экономят конфликтующие данные с БД (просто @Transactional
было недостаточно). Теперь, при попытке я пытаюсь выполнить projectService.save(project)
действие я получаю исключение:
"exception": "org.springframework.transaction.InvalidIsolationLevelException",
"message": "JtaTransactionManager does not support custom isolation levels by default - switch 'allowCustomIsolationLevels' to 'true'",
Можно ли включить эти пользовательские уровни изоляции с Java конфигурации?
Мой вопрос был ссылаюсь больше к тому, что я не знаю, как получить доступ к 'tramsactionManager', чтобы иметь возможность установить это значение. Можно ли это сделать с помощью '@ EnableTransactionManagement'? – Jakubs
Вы будете определять transactionManager в файле applicationcontext.xml или другом XML-файле. Пожалуйста, установите в определении beanBansManager. –
shankarsh15
Дело в том, что я не использую конфигурацию весов на основе xml. Можно ли выполнить настройку java? – Jakubs