内容简介:在实际开发中,我们可能会涉及到一些环境,比如local(本地开发环境),dev(部署到远程的开发环境),test(预发布环境),product(生产环境)。显然,不同的环境下,对应不同的配置信息,比如db/redis/mq等,甚至不同的环境下,程序需要做不同的处理。那么springboot项目是如何支持多环境配置的呢?首先来说,springboot就是一个可执行程序,通过java -jar的方式启动的,那么我们需要在启动的时候,告诉springboot当前的profile(环境)是什么,即:java -ja
首发头条
多环境配置分析
在实际开发中,我们可能会涉及到一些环境,比如local(本地开发环境),dev(部署到远程的开发环境),test(预发布环境),product(生产环境)。显然,不同的环境下,对应不同的配置信息,比如db/redis/mq等,甚至不同的环境下,程序需要做不同的处理。那么springboot项目是如何支持多环境配置的呢?
首先来说,springboot就是一个可执行程序,通过java -jar的方式启动的,那么我们需要在启动的时候,告诉springboot当前的profile(环境)是什么,即:
java -jar xxx.jar --spring.profiles.active=test
通过这个--spring.profiles.active=test就是在告诉springboot,我们设置的profile是test。
实际开发中常用的多环境配置方式
多环境配置
如果你设置了--spring.profiles.active=test,那么springboot会支持加载application-test.properties文件。如果我们通过分目录来存放不同环境的配置文件呢,那么这个时候,需要我们先获取profile。
获取当前profile的方式
从入口类获取profile
java -jar xxx.jar --spring.profiles.active=test
说白了,字符串“--spring.profiles.active=test”会传递到入口类的main方法的String[] args中!
CommandUtils
how to get profile from args
我们从args进行遍历处理,如果找到profile,那么通过System.setProperty进行系统key/value的设置(这里的key为"profile"),这是为了保存profile,方便以后拿到。
注意到,如果不给profile,那么自动设置为dev。
看一下 CommandUtils中具体的解析profile方法
parseSpringProfile
定义的Env枚举类型
到这里,我们就可以根据profile来加载该profile下的配置文件了,比如:
引用系统设置的profile变量
在上文中,我们已经System.setProperty进行设置,将当前环境信息设置到profile变量中,因此我们直接进行${profile}引用了。
我们来看看application.properties文件内容:
根据不同的profile设置不同的启动端口
假设我们想以test环境部署应用:
profile=test
port=7072
验证:
是否可以取得profile,是否可以加载特定目录下的属性文件
不同环境目录下的配置文件
结果:
获取profile验证
得到了test环境下的mongo配置
好了,到这里,多环境的配置就给大家介绍完毕了~
喜欢本文的欢迎关注我私信回复“架构”领取免费 高并发,分布式,Spring,MyBatis,Netty源码分析和大数据等多个知识点 的架构视频资料!
swagger
Swagger,英文翻译过来,就是有点拽,酷的意思,名符其实! Swagger同springboot集成很简单,是一个很强大的api框架,不仅提供了在线文档的查阅(好似java doc),还提供了在线的http测试(好似postman等),简单帅气~
如何集成呢?
需要swagger依赖
swagger设置
下面我们来看下swagger是如何帅气的:
so beautiful
tey it out
到这里,你应该发现,swagger给我们提供了一个在线http api的管理,测试平台,通过swagger,后台同学可以自测,测试同学可以借助它来写自动化case,非常棒~
思考一下我们在dev/test可以提供swagger,而真正带了product环境,我们不希望提供swagger的话(可能考虑安全问题),该如何处理呢?
product不提供swagger功能
其实,就是在构建swagger的时候,根据profile做点手脚罢了!
除了这种手段之外,还可以通过自定义配置类extends
WebSecunityConfigurerAdapter,来override config方法来实现。(这属于SpringSecurity进行访问安全控制的范畴了。)
结束语
好了,到这里,相信大家对于如何进行springboot多环境设置 以及拽拽的swagger有了一定的认识了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 深入 Nginx 之配置篇
- [深入浅出Sphinx]Sphinx配置文件解析
- 深入探索 Android Gradle 插件的缓存配置
- 深入详解JVM内存模型与JVM参数详细配置
- 深入浅出Spring Boot 起步依赖和自动配置
- 深入理解Laravel如何管理和配置多数据库连接的
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
XML Hacks
Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95
Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!