我使用spring jdbc和spring jdbc事务支持。
这是我的配置。
@Configuration
@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
@EnableGlobalMethodSecurity(securedEnabled = true)
@PropertySource(name = "props", value = { "classpath:common/jdbc.properties", "classpath:common/mail.properties",
"classpath:common/message.properties", "classpath:common/common.properties" })
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${jdbc.url}")
private String jdbcURL;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Value("${jdbc.driver}")
private String jdbcDriver;
/**
* configure jdbc datasource
*
* @return DataSource
*/
@Bean
public DataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource(jdbcURL, jdbcUsername, jdbcPassword);
dataSource.setDriverClassName(jdbcDriver);
return dataSource;
}
/**
* configure jdbc template
*
* @return JdbcTemplate
*/
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(getDataSource());
}
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(getDataSource());
}
}
使用此配置事务对我不起作用。我不确定原因,但我能理解的是 -
正如您可以看到jdbcTemplate()和txManager()这两个方法都调用了getDataSource()方法,该方法创建了jdbcDataSource。我认为在我创建两个jdbc dataSource的方法中,所以jdbcTemplate和事务管理器都使用两个不同的dataSource。
所以我的问题是 -
我可以看到在xml中配置它很容易,但是使用java配置我找不到使用jdbcTemplate和transactionManager的示例。
答案 0 :(得分:1)
答案
为什么您的交易无效?很难说,因为你没有提供它无法工作的完整背景,但有些事情需要考虑: