springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置
背景
最近公司在服務(wù)拆遷,接口轉(zhuǎn)移,相同的功能接口到要遷移到對(duì)應(yīng)的服務(wù)中,因?yàn)闀r(shí)間比較趕,別問為什么沒給時(shí)間,沒人,沒資源,但是活還是得干的,為了減少工作量和穩(wěn)妥的需要分兩步走
- 先遷移相關(guān)代碼,保證包的路徑不變,請(qǐng)求接口的路徑不變
- 將遷移的相關(guān)代碼進(jìn)行遷表遷庫(這目前還沒做,計(jì)劃9月實(shí)施)
實(shí)施
配置文件
數(shù)據(jù)庫配置相關(guān)類
import com.alibaba.druid.pool.DruidDataSource; import java.io.Serializable; import java.sql.SQLException; public class JdbcConfig implements Serializable { public JdbcConfig() { super(); // TODO Auto-generated constructor stub } public boolean isDecrypt() { return decrypt; } public void setDecrypt(boolean decrypt) { this.decrypt = decrypt; } public String getDriverClass() { return driverClass; } public void setDriverClass(String driverClass) { this.driverClass = driverClass; } public String getTerminalUrl() { return terminalUrl; } public void setTerminalUrl(String terminalUrl) { this.terminalUrl = terminalUrl; } public String getSlaveurl() { return slaveurl; } public void setSlaveurl(String slaveurl) { this.slaveurl = slaveurl; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getInitialSize() { return initialSize; } public void setInitialSize(int initialSize) { this.initialSize = initialSize; } public int getMinIdle() { return minIdle; } public void setMinIdle(int minIdle) { this.minIdle = minIdle; } public int getMaxActive() { return maxActive; } public void setMaxActive(int maxActive) { this.maxActive = maxActive; } private boolean decrypt; private String driverClass; private String terminalUrl; private String slaveurl; private String username; private String password; private int initialSize; private int minIdle; private int maxActive; public DruidDataSource mainds() throws SQLException { DruidDataSource ds = ds(); ds.setUrl(terminalUrl); return ds; } public DruidDataSource slaveds() throws SQLException { DruidDataSource ds = ds(); ds.setUrl(slaveurl); return ds; } private DruidDataSource ds() throws SQLException { DruidDataSource ds = new DruidDataSource(); ds.setUrl(terminalUrl); ds.setUsername(username); ds.setPassword(password); ds.setFilters("config"); ds.setConnectionProperties("config.decrypt=" + decrypt); ds.setInitialSize(initialSize); ds.setMaxActive(maxActive); ds.setTimeBetweenEvictionRunsMillis(60000); ds.setMinEvictableIdleTimeMillis(300000); ds.setValidationQuery("select 'X'"); ds.setTestWhileIdle(true); ds.setTestOnBorrow(false); ds.setTestOnReturn(false); System.out.println("terminalUrl: " + terminalUrl); return ds; } }
相關(guān)配置
@Bean @ConfigurationProperties(prefix = "jdbc") public JdbcConfig jdbcConfig() { return new JdbcConfig(); } @Bean @ConfigurationProperties(prefix = "business.jdbc") public JdbcConfig businessJdbcConfig() { return new JdbcConfig(); } @Bean(initMethod = "init", destroyMethod = "close") public DruidDataSource businessDataSource() throws SQLException { return businessJdbcConfig().mainds(); } @Bean(initMethod = "init", destroyMethod = "close") public DruidDataSource masterDataSource() throws SQLException { return jdbcConfig().mainds(); } @Bean("jdbctemplate") public JdbcTemplate jdbcTemplate() throws SQLException { JdbcTemplate t = new JdbcTemplate(); t.setDataSource(masterDataSource()); return t; } @Bean("businessJdbctemplate") public JdbcTemplate businessjdbcTemplate() throws SQLException { JdbcTemplate t = new JdbcTemplate(); t.setDataSource(businessDataSource()); return t; }
使用
@Bean public RobotDataDao robotDataDao() throws SQLException { RobotDataDao dao = new RobotDataDao(); dao.setJdbcTemplate(jdbcTemplate()); dao.setTableName("t_business_robot_data"); dao.setPrimaryKey("id"); dao.setSeqName("seq_t_business"); return dao; }
@Bean public VDeviceDao vdeviceDao() throws SQLException { VDeviceDao dao = new VDeviceDao(); dao.setJdbcTemplate(businessjdbcTemplate()); dao.setTableName("t_device"); dao.setPrimaryKey("id"); dao.setSeqName("seq_t_default"); return dao; }
特別注意的,一定要配置的,因?yàn)楝F(xiàn)在有多數(shù)據(jù)源了就要配置對(duì)應(yīng)的事務(wù)配置,單個(gè)默認(rèn)的,多個(gè)就要指定
@Configuration public class TransactionConfig { @Bean public PlatformTransactionManager bfscrmTransactionManager(@Qualifier("masterDataSource") DataSource masterDataSource) { return new DataSourceTransactionManager(masterDataSource); } }
這就配置好了多個(gè)數(shù)據(jù)源了
到此這篇關(guān)于springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置的文章就介紹到這了,更多相關(guān)springboot+springJdbc+postgresql多數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot3集成PostgreSQL的詳細(xì)過程
- mybatis+springboot發(fā)布postgresql數(shù)據(jù)的實(shí)現(xiàn)
- SpringBoot集成PostgreSQL并設(shè)置最大連接數(shù)
- SpringBoot整合PostgreSQL的示例代碼
- SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫完整步驟(配置多數(shù)據(jù)源)
- SpringBoot連接使用PostgreSql數(shù)據(jù)庫的方法
- Springboot中MyBatisplus使用IPage和Page分頁的實(shí)例代碼
- SpringBoot+MybatisPlus+代碼生成器整合示例
- springboot集成mybatisplus實(shí)例詳解
- SpringBoot連接PostgreSQL+MybatisPlus入門案例(代碼詳解)
相關(guān)文章
使用@Validated 和 BindingResult 遇到的坑及解決
這篇文章主要介紹了使用@Validated 和 BindingResult 遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑
這篇文章主要介紹了springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Java if(boolean)和if(boolean=true)區(qū)別解析
這篇文章主要介紹了Java if(boolean)和if(boolean=true)區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02詳解Kotlin和anko融合進(jìn)行Android開發(fā)
本篇文章主要介紹了Kotlin和anko融合進(jìn)行Android開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹
本篇文章為大家展示了如何在SpringBoot中統(tǒng)一處理邏輯異常,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲2022-09-09springboot內(nèi)嵌Tomcat安全漏洞修復(fù)方式
針對(duì)CVE-2020-1938漏洞,建議升級(jí)Tomcat至安全版本以避免受影響,影響版本包括:Apache Tomcat 9.x小于9.0.31、Apache Tomcat 8.x小于8.5.51、Apache Tomcat 7.x小于7.0.100及Apache Tomcat 6.x,2024-10-10java POI 如何實(shí)現(xiàn)Excel單元格內(nèi)容換行
這篇文章主要介紹了java POI 如何實(shí)現(xiàn)Excel單元格內(nèi)容換行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07springboot項(xiàng)目整合druid數(shù)據(jù)庫連接池的實(shí)現(xiàn)
這篇文章主要介紹了springboot項(xiàng)目整合druid數(shù)據(jù)庫連接池的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04