您好,登录后才能下订单哦!
这篇文章主要介绍了怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换文章都会有所收获,下面我们一起来看看吧。
DruidDataSource
└── src
└── main
└── java
└── com.steakliu.druiddatasource
├── controller
│ └── DataSourceController.java
└── datasource
│ └── DataSourceConfiguration.java
└── DruidDataSourceApplication.java
└── resource
└── application.yml
└── application-dev.yml
└── application-prod.yml
└── application-test.yml
application.yml内容如下,里面主要放的是公共的配置,比如项目的名称啊,端口啊这些,使用spring.profiles.active = dev/test/prod切换不同的环境。
server: port: 8080 spring: profiles: active: dev
spring: datasource: druid: username: root password: xiaosi520@ url: jdbc:mysql://127.0.0.1:3306/store-dev driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource
spring: datasource: druid: username: root password: xiaosi520@ url: jdbc:mysql://127.0.0.1:3306/store-test driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource
spring: datasource: druid: username: root password: xiaosi520@ url: jdbc:mysql://127.0.0.1:3306/store-prod driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource
从上面我们知道,三个yaml文件主要配置的是数据库,分为dev,test,prod三个库,我也在数据库创建了三个数据,等一下我们要根据不同的配置获取不同的数据库的数据, 三个数据库如下,其中每个库里面都有一张表,分别放了一条测试数据。
DataSourceConfiguration
是一个数据源配置类,我们使用alibaba的Druid数据源,使用@Value
注解来获取yaml文件的数据库配置, 定义了三个Bean,并使用@Profile
来进行开发环境,测试环境,生产环境的区分,这里它会识别application.yml
文件中的spring.profiles.active
package com.steakliu.druiddatasource.datasource; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import javax.sql.DataSource; @Configuration public class DataSourceConfiguration { @Value("${spring.datasource.druid.username}") private String username; @Value("${spring.datasource.druid.password}") private String password; @Value("${spring.datasource.druid.url}") private String url; @Value("${spring.datasource.druid.driver-class-name}") private String driverClassName; @Profile("dev") @Bean public DataSource devDataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); return dataSource; } @Profile("test") @Bean public DataSource testDataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); return dataSource; } @Profile("prod") @Bean public DataSource prodDataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); return dataSource; } }
创建一个Controller来测试获取数据,这里使用JdbcTemplate
来获取数据,
package com.steakliu.druiddatasource.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; @RestController public class DataSourceController { @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("datasource") public List<Map<String, Object>> datasource(){ List<Map<String, Object>> maps = jdbcTemplate.queryForList("SELECT * FROM sys_env"); return maps; } }
spring: profiles: active: dev
spring: profiles: active: test
spring: profiles: active: dev
到这里我们完成了开发环境,测试环境,生产环境的切换,其核心就是spring.profiles.active
和@Profile
注解,那么这时候你可能会觉得,每次打包发布前都需要 去application.yml配置文件中修改spring.profiles.active
,是不是有点麻烦,没错,确实会有点麻烦,那么我们下面对其改造,使用Maven的profile
来改造,实现勾选式
的配置。
我们在maven中对dev,test,prod进行定义,如下,使用<profiles>
标签进行包裹,使用<activeByDefault>
标签将dev
作为默认的环境, 在<properties>
中定义环境标识(dev,test,prod),<mvn.profile>
是自定义的,可以任意定义,它和application.yml
那边进行对应。
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <mvn.profile>dev</mvn.profile> </properties> </profile> <profile> <id>test</id> <properties> <mvn.profile>test</mvn.profile> </properties> </profile> <profile> <id>prod</id> <properties> <mvn.profile>prod</mvn.profile> </properties> </profile> </profiles>
application.yml里面使用@mvn.profile@
这种方式来读取pom.xml中的配置。
spring: profiles: active: @mvn.profile@
定义好上面的pom.xml
和application.yml
后,会在我们IDEA编译器右侧的Maven栏下出现Profiles
,就可以 进行选择了,所实现的效果和直接在applicaiton.yml
中修改是一样的。
除了上面的这两种,我们还可以在IDEA里面进行指定,也能达到同样的效果。
关于“怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么使用Spring注解@Profile实现开发环境/测试环境/生产环境切换”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。