数据源切换
一.这 里我做的是mysql读写分离,我是建立了两个链接,分别用了不同的端口号来分开(当然也可以区分数据库,这个根据自己所需 )
这个是在springboot项目中的,application.properties文件中连接的
二.接下来我们添加工具包
package com.fh.datademo.datasoucedynamic; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; /** * @author yuchunqiang * @Title: DataSourceConfig * @Package com.fh.datademo.datasoucedynamic * @Description: ${todo} * @date 2018/10/24 16:01 */ @Configuration public class DataSourceConfig { @Bean(name = "selectDataSource") @ConfigurationProperties(prefix = "spring.datasource.select") public DataSource dataSource1() { return DataSourceBuilder.create().build(); } @Bean(name = "updateDataSource") @ConfigurationProperties(prefix = "spring.datasource.update") public DataSource dataSource2() { return DataSourceBuilder.create().build(); } }
这个主要用来找到两个mysql的连接,并提供给另外一个工具包决定我们的方法到底走application.properties中哪一个连接
用来在走方法之前,来决定走哪个数据源,在@Before的设置中(@Before("execution(* com.fh.datademo.service.*.*.*(..))"))决定具体到哪个包,具体到哪个类,然后获取其方法名来判断,方法名中包含所规定的字符,则走读的数据源,否则走写的数据源。从而来达到读写分离,实现自动切换的功能
项目git地址:https://github.com/yuchunqiang