數據源切換
一.這 里我做的是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