Spring Boot系列之九 配置和Profiles(二)
来源:互联网 发布:php程序员培训机构 编辑:程序博客网 时间:2024/06/06 21:35
说明
写到这里突然发现很多地方都需要`--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
支持请点赞,不喜勿喷.
每天一点点,成长多一点.
- Spring Boot系列之九 配置和Profiles(二)
- Spring Boot系列之九 配置和Profiles(一)
- spring boot 多环境配置和发布打包(九)
- spring boot 官方文档翻译之 Profiles
- Spring Boot系列之二 Web开发
- Spring Boot系列之十 日志配置
- Spring Boot系列(二) Spring Boot 构建框架
- SpringBoot系列之二intelliJ idea 配置Spring boot 热部署
- Spring boot系列:配置文件(二)
- Spring Boot系列<二>:SpringBoot完美配置Mybatis
- Spring Boot系列(九) Spring Boot集成Sorl搜索客户端
- Spring Boot系列(九):定时任务
- spring-boot笔记-属性配置(二)
- spring-boot系列之初识spring-boot
- Spring boot源码分析-profiles环境(4)
- Spring Boot参考教程(九)配置上传下载
- Spring boot 系列 入门--配置
- 【Spring Boot实战】二 -- 自动配置和自定义配置
- 表单中的button标签会自动提交表单问题
- html5与jsp页面同样的html代码展示的页面效果不一样的问题
- 使用selenium录制的loadrunner自带飞机购票小系统
- 一起做RGB-D SLAM (4)
- iOS内存泄漏问题
- Spring Boot系列之九 配置和Profiles(二)
- git 合并两个远程库
- 计算机视觉领域的一些牛人博客
- 临界区和互斥器的区别
- Eddy的难题
- 关于Session(javax.servlet.HttpSession)持久化----为什么实体类需要实现序列化接口
- 随记6——Android透明度值
- [资源]第三方免费接口
- ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.157' (111)