SpringMVC配置多个数据源
在Spring MVC中配置多个数据源通常涉及以下步骤:
- 配置多个数据库连接属性。
- 创建多个数据源实例(例如,使用Spring的
DriverManagerDataSource
或者集成JDBC模板JdbcTemplate
)。 - 配置多个
SessionFactory
或SqlSessionFactory
实例,并将它们绑定到对应的数据源。 - 配置事务管理器,为每个数据源配置独立的事务管理器。
- 配置
@Transactional
注解以指定使用哪个事务管理器。
以下是一个简化的示例配置:
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSource1")
@Primary
public DataSource dataSource1() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db1");
dataSource.setUsername("user1");
dataSource.setPassword("pass1");
return dataSource;
}
@Bean(name = "dataSource2")
public DataSource dataSource2() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db2");
dataSource.setUsername("user2");
dataSource.setPassword("pass2");
return dataSource;
}
@Bean(name = "sessionFactory1")
public LocalSessionFactoryBean sessionFactory1(@Qualifier("dataSource1") DataSource dataSource1) {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource1);
// 配置Hibernate属性、映射等
return sessionFactory;
}
@Bean(name = "sessionFactory2")
public LocalSessionFactoryBean sessionFactory2(@Qualifier("dataSource2") DataSource dataSource2) {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource2);
// 配置Hibernate属性、映射等
return sessionFactory;
}
// 配置事务管理器和切面
// ...
}
在服务层,你可以使用@Transactional
注解来指定使用哪个数据源:
@Service
public class MultiDataSourceService {
@Autowired
@Qualifier("sessionFactory1")
private SessionFactory sessi
评论已关闭