Уважаемые все, я использую стандартное веб-приложение Spring 5 без загрузки Spring. Который также использует Spring Security с помощью WebSecurityConfigurerAdapter и UserDetailsService.
Мой UserDetailsService использует классы обслуживания и использует некоторые из моих классов репозитория, что приводит к тому, что JPA Persistence инициализируется.
Поскольку я реализовал WebSecurityConfigurerAdapter Я понял, что автоматическое управление транзакциями игнорируется, что означает, что @EnableTransactionManagement, а также аннотация @Transactional, похоже, не действуют. Если я не использую пружинную защиту, тогда мое приложение отлично работает с автоматизированным управлением транзакциями.
Не поддерживается ли автоматическое управление транзакциями в контексте WebSecurityConfigurerAdapter?
Какова здесь лучшая практика, значит, существует способ объединить контекст приложения и WebSecurityConfigurerAdapter или мне нужно ограничить / изолировать мой UserDetailsService, чтобы другие ненужные классы службы и JPA-хранилища не загружались / не инициализировались?
Я пытался использовать следующий код, но, как уже упоминалось, он не работает
@Configuration
@ComponentScan(basePackages = { ... })
@EnableTransactionManagement
public abstract class AbstractCoreWebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
...
}