在现实项目当中我们往往都有不同的部署环境,例如:dev数据库,系统测试数据库和生产数据库,那么如何把同一个弹簧启动web应用程序部署到不同的数据库环境呢?
弹簧引导提供一个概要文件的功能,通过配置多个概要文件,实现同一应用切换到不同的部署环境当中。这里不在详细介绍概要的概念。有兴趣自行到官网查询。这里通过代码来说明如何配置弹簧引导来实现spring JDBC tempalte切换不同的JDBC数据源
1在pom。xml引入必须的依赖
,& lt; dependency> ,,,,,,,,,,,& lt; groupId> org.springframework.boot ,,,,,,,,,,,& lt; artifactId> spring-boot-starter-jdbc ,,,,,,,& lt;/dependency> ,,,,,,, ,,,,,,,& lt; dependency> ,,,,,,,,,,,& lt; groupId> org.springframework ,,,,,,,,,,,& lt; artifactId> spring-jdbc ,,,,,,,& lt;/dependency>, ,,,,,,, ,,,,& lt; dependency> ,,,& lt; groupId> com.oracle ,,,& lt; artifactId> ojdbc6 ,,,,,,,& lt; version> 11.2.0.3
注:这里我使用的是oracle jdbc。
2创建不同的弹簧引导配置文件,这三个文件分表代表开发,系统、生产
application.properties application-sys.properties application-prod。属性
注意应用程序——{概要}对应不同的环境。可以通过java jar -Dspring.profile。积极=sys来切换不同的配置文件
3配置不同的jdbc信息到相应的配置文件当中
在application.properties 文件中 spring.datasource.url=jdbc: oracle:薄:@dev01.example.com: 1521:劳逊 spring.datasource.username=devUser spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 在application-sys.properties spring.datasource.url=jdbc: oracle:薄:@sys01.example.com: 1521:劳逊 spring.datasource.username=sysUser spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc.OracleDriver 在application-prod.properties spring.datasource.url=jdbc: oracle:薄:@prodv01.example.com: 1521:劳逊 spring.datasource.username=本公司 spring.datasource.password=XXXXX spring.datasource.driver-class-name=oracle.jdbc。OracleDriver
4配置弹簧boot
@ configuration public class  DataBaseConfig { @ bean (name=" asuDBsource ") @ConfigurationProperties(前缀=皊pring.datasource”) public DataSource  primaryDataSource (), { ,,,return DataSourceBuilder.create () .build (); } ,@ bean (name =,“asuJDBC”) ,@ autowired public 才能;JdbcTemplate  blcJdbcTemplate (@ qualifier (“asuDBsource”), DataSource 源),{ ,,,,,,,return new JdbcTemplate(源); ,,,} }
这里我创建了一个DataBaseConfig。java的文件来配置jdbc连接到数据库并且返回数据源,并且配置这个数据源来返回jdbcTemplate。我这里使用的是传统jdbc连接数据库并没有使用hibernate只
5通过依赖注入(DI)来调用jdbcTemplate只
@ public class  AsuDaoImpl implements IAsuDao  { @ autowired @ qualifier (value=" https://www.yisu.com/zixun/asuJDBC ") private JdbcTemplate  jdbcTemplate; }
这里我创建一个dao接口,和刀Impl来注入这个jdbcTemplate只