[英]Spring 4 @Transactional doesn't work
我有一個配置簡單的Spring 4.3應用程序,我希望服務類中的方法是事務性的,因此我在配置中啟用事務管理,然后使用@Transactional注釋我的服務方法。 我從控件中調用服務方法,但是它們的行為不符合預期。 當方法的某些部分引發異常回滾時,永遠不會調用
AppInitializer.class:
@EnableTransactionManagement
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class, SecurityConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
RootConfig.class:
@Configuration
@EnableJpaRepositories(basePackages"package.repository"})
public class RootConfig {
@Bean
public DataSource dataSource() {
...
return dataSource;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
...
return hibernateJpaVendorAdapter;
}
@Bean
public EntityManagerFactory entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
...
return factory.getObject();
}
@Bean
public JpaTransactionManager transactionManager() {
return new JpaTransactionManager(entityManagerFactory());
}
}
有人知道這里有什么問題嗎
GitHub鏈接https://github.com/VadOs1/TRANSACTIONAL-ISSUE/
謝謝
您可以從AppInitializer類中刪除@EnableTransactionManagement批注並在RootConfig類中啟用它,讓我知道這是否對您有用
即
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages"package.repository"})
public class RootConfig {
@Bean
public DataSource dataSource() {
...
return dataSource;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
...
return hibernateJpaVendorAdapter;
}
@Bean
public EntityManagerFactory entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
...
return factory.getObject();
}
@Bean
public JpaTransactionManager transactionManager() {
return new JpaTransactionManager(entityManagerFactory());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.