您的位置:首页 > 编程语言 > Java开发

Spring Boot系列之九 配置和Profiles(二)

2017-04-13 09:33 495 查看
说明

写到这里突然发现很多地方都需要`--spring.profiles.active=dev`这个命令行参数.请大家别忘咯加- -!

And 这两个项目我们使用`application.yml`配置文件.因其功能比`application.properties`更加强大.下面会介绍滴.

End 其实Spring Boot的配置文件可以通过`Spring-Cloud-Config`项目来进行管理.这个以后再说吧

Profiles

`@Profile`注解可以用在`@Component`和`@Configuration`注解之上,用来隔离应用程序配置,使这些配置只能在特定的环境下生效.说白了,就是用了区分生产环境,开发环境,测试环境等等环境的一个配置项.

`@Profile`注解和Multi-profile YAML文档

直接看例子吧



修改配置文件application.yml如下:



注意其中的`---` ,区分profile. 不写直接报错!

运行

dev

设置IDE启动该项目的命令行参数为`spring.profiles.active=dev`或者直接用`java -jar xxx.jar --spring.profiles.active=dev`来启动.

调用`curl http://localhost:8080/settings`或者直接浏览器打开`http://localhost:8080/settings`输出结果`阳光如初 in dev.`

prod

好吧,虽然我们的配置文件里边写了两个`veryjava.name`属性,一个属于`prod`环境,另一个属于`dev`环境.但是,但是! 我们在`VeryJavaProperties`类上写了一个注解`@Profile("dev")`并指定这个类在`spring.profiles.active=dev`时才存在.所以如果这个时候我们在测试代码或者其他代码中使用`@AutoWired`注解注入`VeryJavaProperties`是不对的.

怎么让它顺利运行呢?我们只要修改`VeryJavaProperties`的`@Profile("dev")`为`@Profile({"dev","prod"})`就可以了.

总结

这个例子中说明了两个问题,其一是`@Profile("dev")`这个注解指定profile环境,其二是`application.yml`配置文件指定了多个profile下的相同参数的不同值,用于不同的环境.

代码

本文限于篇幅原因,不能展示所有的代码,如果想要完整的代码示例,请移步https://github.com/sunshineasbefore/veryjava.spring.boot/tree/master/profiles

支持请点赞,不喜勿喷.

每天一点点,成长多一点.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: