Spring Cloud项目中单数据源改为多数据源
来源:互联网 发布:蒙特卡洛随机数算法 编辑:程序博客网 时间:2024/05/21 15:50
应项目的需求,要把项目改成多数据源,将两张表单独抽取出来,放入另一个数据库中,由于spring cloud 架构不熟悉,也是花了点时间才做好。
1、禁用srping boot自动配置的单数据源,
启动类上加上注解@SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
@SpringBootApplication(exclude= DataSourceAutoConfiguration.class)@EnableDiscoveryClient@EnableFeignClientspublic class UserServerApplication { public static void main(String[] args) { SpringApplication.run(UserServerApplication.class, args); }}
2、修改配置文件,项目中用spring cloud config统一管理配置文件的
在datasource节点下再加一个新数据源配置,如下所示
datasource: user-server: url: jdbc:mysql://***?characterEncoding=utf-8&autoReconnect=true&f*** username: *** password: *** driver-class-name: com.mysql.jdbc.Driver max-idle: 10 max-wait: 10000 min-idle: 5 initial-size: 5 validation-query: SELECT 1 test-on-borrow: false test-while-idle: true time-between-eviction-runs-millis: 18800 user-server-separate: url: jdbc:mysql://***?characterEncoding=utf-8&autoReconnect=true**** username: *** password: *** driver-class-name: com.mysql.jdbc.Driver max-idle: 10 max-wait: 10000 min-idle: 5 initial-size: 5 validation-query: SELECT 1 test-on-borrow: false test-while-idle: true time-between-eviction-runs-millis: 18800
3、分包 两个数据库对应两个实体类的包,xml文件也一样,分两个文件夹,如下图所示
domain 和 domain_separate 存放不同库的实体类
mybatis和separate存放不同库对应的xml文件
4、创建新的数据源
UcSeparateDataSourceConfig这是新配置的数据源,具体内容如下
@Configuration@MapperScan(basePackages = {"com.baojun.user_server.application.domain_separate"}, sqlSessionFactoryRef = "ucSeparateSqlSessionFactory")public class UcSeparateDataSourceConfig { @Primary @Bean(name = "ucSeparateDataSource") @ConfigurationProperties(prefix = "datasource.user-server-separate") public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "ucSeparateTransactionManager") public DataSourceTransactionManager transactionManager(@Qualifier("ucSeparateDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Primary @Bean(name = "ucSeparateSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("ucSeparateDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:separate/*.xml")); return factoryBean.getObject(); } @Bean(name = "ucSeparateSqlSessionTemplate") @Primary public SqlSessionTemplate sqlSessionTemplate(@Qualifier("ucSeparateSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }
这里要注意包路径和xml文件的路径,
@ConfigurationProperties(prefix = “datasource.user-server-separate”)前缀与配置文件中一致
5、在需要更改数据源的地方,加入对应的注解
@Resource(name=”ucSeparateSqlSessionTemplate”)这个就是新配置的数据源
@Repositorypublic class CarDaoImpl extends BaseDaoImpl<Car> implements CarDao { public CarDaoImpl() { super(Car.class); } @Resource(name="ucSeparateSqlSessionTemplate") public void sqlSessionTemplate(SqlSessionTemplate sessionTemplate) { setSqlSessionTemplate(sessionTemplate); }}
http://blog.csdn.net/neosmith/article/details/61202084,这是本人参考的网上例子
阅读全文
0 0
- Spring Cloud项目中单数据源改为多数据源
- Kinect中多数据源获取和单数据源获取
- 企业项目中Spring多数据源的配置方法
- spring+myBatis 配置多数据源,切换数据源
- spring mybatis 多数据源整合 动态数据源例子
- Spring Boot + Mybatis多数据源和动态数据源配置
- spring配置多数据源,threadLocal切换数据源
- Spring Boot + Mybatis多数据源和动态数据源配置
- Spring中配置数据源的4种形式(含有如何在spring框架中解决多数据源的问题)
- spring 配置多数据库和数据源
- spring 中多数据源的配置
- Spring中实现多数据源事务管理
- Spring中mybatis多数据源写法
- spring中多数据源配置
- Spring中实现多数据源事务管理
- Spring Boot + Spring Data JPA项目配置多数据源
- spring cloud/boot 使用事务(分布式事务)以及多数据源
- spring多数据源
- 前端开发流程
- SSH 代理
- Java 事务设计策略
- linux C语言获取随机数rand()和srand(time(NULL))介绍
- Leetcode个人题解11
- Spring Cloud项目中单数据源改为多数据源
- go 时间篇
- YCrCb与YPrPb的含义与区别
- 翻译:《PKCS#7
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制,以及各平台的实现方案
- “Name node is in safe mode” 错误解决方法
- webpack打包编译学习记录
- Spring MVC中对于邮件的初始化,和发送邮件实例代码
- 用c++实现扫雷