千家信息网

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

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,在现实项目当中我们往往都有不同的部署环境,例如:dev数据库, system test 数据库 和production 数据库, 那么如何把同一个spring boot web app 部署到不同的数
千家信息网最后更新 2025年01月21日如何部署同一个Spring boot web 应用到不同的环境

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


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


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

             org.springframework.boot            spring-boot-starter-jdbc                                    org.springframework            spring-jdbc                                                  com.oracle                          ojdbc6        11.2.0.3

注:这里我使用的是oracle jdbc。


2 创建不同的spring boot 配置文件,这三个文件分表代表dev,system,production

application.propertiesapplication-sys.propertiesapplication-prod.properties

注意 application-{profile} 对应不同的环境。 可以通过java -jar -Dspring.profile.active=sys 来切换不同的配置文件


3 配置不同的jdbc 信息到相应的配置文件当中

在application.properties 文件中spring.datasource.url=jdbc:oracle:thin:@dev01.example.com:1521:lausonedspring.datasource.username=devUserspring.datasource.password=XXXXXspring.datasource.driver-class-name=oracle.jdbc.OracleDriver在application-sys.propertiesspring.datasource.url=jdbc:oracle:thin:@sys01.example.com:1521:lausonedspring.datasource.username=sysUserspring.datasource.password=XXXXXspring.datasource.driver-class-name=oracle.jdbc.OracleDriver在application-prod.propertiesspring.datasource.url=jdbc:oracle:thin:@prodv01.example.com:1521:lausonedspring.datasource.username=prodUserspring.datasource.password=XXXXXspring.datasource.driver-class-name=oracle.jdbc.OracleDriver


4 配置spring boot

@Configurationpublic 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.

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

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

0