您好,登錄后才能下訂單哦!
在現實項目當中我們往往都有不同的部署環境,例如:dev數據庫, system test 數據庫 和production 數據庫, 那么如何把同一個spring boot web app 部署到不同的數據庫環境呢?
spring boot 提供一個profile的功能, 通過配置多個profile文件,實現同一應用切換到不同的部署環境當中。這里不在詳細介紹profile的概念。有興趣自行到官網查詢。這里通過代碼來說明如何配置spring boot 來實現spring JDBC tempalte切換不同的jdbc數據源
1 在pom.xml引入必須的依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3</version>
注:這里我使用的是oracle jdbc。
2 創建不同的spring boot 配置文件,這三個文件分表代表dev,system,production
application.properties application-sys.properties application-prod.properties
注意 application-{profile} 對應不同的環境。 可以通過java -jar -Dspring.profile.active=sys 來切換不同的配置文件
3 配置不同的jdbc 信息到相應的配置文件當中
在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.OracleDriver
4 配置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); } }
這里我創建了一個DataBaseConfig.java 的文件來配置jdbc 連接到數據庫并且返回數據源, 并且配置這個數據源來返回jdbcTemplate。 我這里使用的是傳統jdbc 連接數據庫并沒有使用hibernate.
5 通過依賴注入(DI) 來調用JDBCTemplate.
@Repository public class AsuDaoImpl implements IAsuDao { @Autowired @Qualifier(value="asuJDBC") private JdbcTemplate jdbcTemplate; }
這里我創建一個dao interface, 和dao Impl來注入這個jdbcTemplate.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。