在实际开发中,我们会遇到多数据源需要同时处理数据的问题
1.首先在配置文件中,配置多个数据源
2.在config下添加对应的数据源的参数:
@ConfigurationProperties(prefix = "spring.datasource")
@Bean(name = {"primaryDataSource"})
@ConditionalOnMissingBean(name = "primaryDataSource")
@Primary
public DruidDataSource primaryDataSource() {
DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return dataSource;
}
@Bean(name = {"primaryJdbcTemplate"})
@ConditionalOnMissingBean(name = "primaryJdbcTemplate")
@Primary
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource")DruidDataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "secondTransactionManager")
public PlatformTransactionManager secondTransactionManager(@Qualifier("secondEntityManagerFactory") EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean(name = "secondJdbcTemplate")
@ConditionalOnMissingBean(name = "secondJdbcTemplate")
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDatasource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
3.在对应的需要实现的位置注入并调用。
@Resource(name = "primaryJdbcTemplate")
private JdbcTemplate jdbcTemplate;
@Resource(name = "secondJdbcTemplate")
private JdbcTemplate syncJdbcTemplate;
4.多数据源操作记得一定要打开事务处理,保证数据的准确性。
在实现的方法上加上注解: @Transactional(Spring控制事务的注解)