在現(xiàn)實(shí)項(xiàng)目當(dāng)中我們往往都有不同的部署環(huán)境,例如:dev數(shù)據(jù)庫, system test 數(shù)據(jù)庫 和production 數(shù)據(jù)庫, 那么如何把同一個(gè)spring boot web app 部署到不同的數(shù)據(jù)庫環(huán)境呢?
目前創(chuàng)新互聯(lián)建站已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、安岳網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。spring boot 提供一個(gè)profile的功能, 通過配置多個(gè)profile文件,實(shí)現(xiàn)同一應(yīng)用切換到不同的部署環(huán)境當(dāng)中。這里不在詳細(xì)介紹profile的概念。有興趣自行到官網(wǎng)查詢。這里通過代碼來說明如何配置spring boot 來實(shí)現(xiàn)spring JDBC tempalte切換不同的jdbc數(shù)據(jù)源
1 在pom.xml引入必須的依賴
注:這里我使用的是oracle jdbc。
2 創(chuàng)建不同的spring boot 配置文件,這三個(gè)文件分表代表dev,system,production
application.properties application-sys.properties application-prod.properties注意 application-{profile} 對應(yīng)不同的環(huán)境。 可以通過java -jar -Dspring.profile.active=sys 來切換不同的配置文件
3 配置不同的jdbc 信息到相應(yīng)的配置文件當(dāng)中
在application.properties 文件中 spring.datasource.url=jdbc:oracle:thin:@dev01.example.com:1521:lausoned spring.datasource.username=devUser spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 在application-sys.properties spring.datasource.url=jdbc:oracle:thin:@sys01.example.com:1521:lausoned spring.datasource.username=sysUser spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 在application-prod.properties spring.datasource.url=jdbc:oracle:thin:@prodv01.example.com:1521:lausoned spring.datasource.username=prodUser spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc.OracleDriver4 配置spring boot
@Configuration public class DataBaseConfig { @Bean(name="asuDBsource") @ConfigurationProperties(prefix="spring.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "asuJDBC") @Autowired public JdbcTemplate blcJdbcTemplate(@Qualifier("asuDBsource") DataSource source) { return new JdbcTemplate(source); } }這里我創(chuàng)建了一個(gè)DataBaseConfig.java 的文件來配置jdbc 連接到數(shù)據(jù)庫并且返回?cái)?shù)據(jù)源, 并且配置這個(gè)數(shù)據(jù)源來返回jdbcTemplate。 我這里使用的是傳統(tǒng)jdbc 連接數(shù)據(jù)庫并沒有使用hibernate.
5 通過依賴注入(DI) 來調(diào)用JDBCTemplate.
@Repository public class AsuDaoImpl implements IAsuDao { @Autowired @Qualifier(value="asuJDBC") private JdbcTemplate jdbcTemplate; }這里我創(chuàng)建一個(gè)dao interface, 和dao Impl來注入這個(gè)jdbcTemplate.
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。