如何部署同一个Spring boot web 应用到不一样的环境

在现实项目当中咱们每每都有不一样的部署环境,例如:dev数据库, system test 数据库 和production 数据库, 那么如何把同一个spring boot web app 部署到不一样的数据库环境呢?java


spring boot 提供一个profile的功能, 经过配置多个profile文件,实现同一应用切换到不一样的部署环境当中。这里不在详细介绍profile的概念。有兴趣自行到官网查询。这里经过代码来讲明如何配置spring boot 来实现spring JDBC tempalte切换不一样的jdbc数据源web


1 在pom.xml引入必须的依赖spring

 <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,productionoracle

application.properties
application-sys.properties
application-prod.properties

注意 application-{profile} 对应不一样的环境。 能够经过java -jar -Dspring.profile.active=sys 来切换不一样的配置文件app


3 配置不一样的jdbc 信息到相应的配置文件当中ide

在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 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. ui


5 经过依赖注入(DI) 来调用JDBCTemplate. url

@Repository
public class AsuDaoImpl implements IAsuDao {
	@Autowired
	@Qualifier(value="asuJDBC")
	private JdbcTemplate jdbcTemplate;

}	

这里我建立一个dao interface, 和dao Impl来注入这个jdbcTemplate. 

相关文章
相关标签/搜索