spring-boot之(3) profile
在我们发布测试的时候会分很多环境,比如开发环境,测试环境,准生产环境,生产环境,在spring boot中提供了不同环境的配置——profile。
- 整理项目结构
按照spring boot推荐的项目结构规范一下demo的结构。现在项目结构整理如下
-Java Project
-src/main/java
-com.xxx.xxx
- web
- IndexController.java
- config
- Config.java
-App.java
- src/main/resources
- application.yml
-src/test/java
-com.xxx.xxx
-AppTest.java
-pom.xml
- 注解获取配置文件的值
配置文件我们采用yml格式的,yml格式的写法比properties更加有层次感,更加直观。在application.yml配置,yml的语法大家可以自行百度
test:
username: fzhsh
server:
port: 80
然后在IndexController.java获取配置文件里面的值,关于yml和properties的对应关系可以查看
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-loading-yaml
@RestController public class IndexController { @Value("${test.username}") private String username; @Autowired private Config config; @RequestMapping("/") String hello(){ return username + ", hello world !!!" + config.getServers(); } }
启动后访问http://localhost会发现获取到username的值
- 按profiles来生效对应的配置
修改application.yml的内容如下:
# common configuration server: port: 80 # 设置生效的配置 spring: profiles: active: prod --- # dev configuration spring: profiles: dev test: username: dev my: servers: - dev.dev.bar.com - dev.foo.bar.com --- # test configuration spring: profiles: test test: username: test my: servers: - test.dev.bar.com - test.foo.bar.com --- # prod configuration spring: profiles: prod test: username: prod my: servers: - dev.bar.com - foo.bar.com
再访问http://localhost会发现prod的配置生效
- 另外yml语法支持很多数据类型,比如上面配置文件里面的数组格式
my: servers: - dev.bar.com - foo.bar.com
config.java文件如下,使用ConfigurationProperties注解
@Component @ConfigurationProperties(prefix = "my") public class Config { private List<String> servers = new ArrayList<String>(); public List<String> getServers(){ return servers; } }
参考资料:
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-configuration-classes

浙公网安备 33010602011771号