属性配置文件详解(2)(十七)

news/2024/7/7 18:59:01

过命令行设置属性值

相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888,通过使用–server.port属性来设置xxx.jar应用的端口为8888。

在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。

 

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)

多环境配置

我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。

对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。

 

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

如:spring.profiles.active=test就会加载application-test.properties配置文件内容

下面,以不同环境配置不同的服务端口为例,进行样例实验。

  • 针对各环境新建不同的配置文件application-dev.propertiesapplication-test.propertiesapplication-prod.properties

  • 在这三个文件均都设置不同的server.port属性,如:dev环境设置为1111,test环境设置为2222,prod环境设置为3333

  • application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置

  • 测试不同配置的加载

    • 执行java -jar xxx.jar,可以观察到服务端口被设置为1111,也就是默认的开发环境(dev)
    • 执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为2222,也就是测试环境的配置(test)
    • 执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为3333,也就是生产环境的配置(prod)

按照上面的实验,可以如下总结多环境的配置思路:

  • application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置
  • application-{profile}.properties中配置各个环境不同的内容
  • 通过命令行方式去激活不同环境的配置

转载于:https://www.cnblogs.com/MaxElephant/p/10232080.html


http://lihuaxi.xjx100.cn/news/245048.html

相关文章

严苛模式 strictmode

参考链接 http://blog.csdn.net/brokge/article/details/8543145 一、严苛模式-虚拟机策略 虚拟机策略(VmPolicy)能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其他任何类似可关闭对象在关闭前的完结操作。…

关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》

关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》:答案在文末 A. 向公司外部提供的http/api接口,推荐使用“错误码”方式返回异常或者错误信息。B. 对于应用内部的方法调用,推荐使用“抛出异常”的方…

获取微信用户信息

2019独角兽企业重金招聘Python工程师标准>>> 微信公众平台开发(76) 获取用户基本信息 本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。本文的方法将囊括订阅号和服务号以及自定义菜单各种场景&#xf…

一个从四秒到10毫秒,花了1年的算法问题?

原文:一个从四秒到10毫秒,花了1年的算法问题?五一后的第一周,由于搬家腰扭伤了,没注意导致压迫神经,躺在床上休息了好几天。所以没事就挂 QQ,一个网友突然问了我一个算法问题。所以有了这篇文章。感触很深&…

关于类的序列化,下列说法哪些是正确的

关于类的序列化,下列说法哪些是正确的:答案在文末 A. 类的序列化与serialVersionUID毫无关系。B. 如果完全不兼容升级,不需要修改serialVersionUID值。C. POJO类的serialVersionUID不一致会编译出错。D. POJO类的serialVersionUID不一致会抛…

(轉貼) 友達光電第五屆【A+種子暑期實習計畫】開始辦理報名 (News)

友達光電第五屆【A種子暑期實習計畫】開始辦理報名 友達光電以絕佳的團隊執行力,帶領台灣光電產業進入世界級的領域! 還在就學的你/妳,想成為世界級光電產業的A種子嗎? 把握最後的暑假加入友達的A種子實習團隊吧!! 【2008 A種子募集計畫】 實習期間&am…

Scala implement Comb Sort

2019独角兽企业重金招聘Python工程师标准>>> /**** param arr 待排序的数据* param o 隐式转换* tparam T type* return*/def combSort[T](arr: Array[T])(implicit o: Ordering[T]): (Seq[T], Int) {import o._var gap: Int arr.lengthvar hasChanged truevar…

4月第4周全球域名商TOP15:万网第四 增势减弱

IDC评述网(idcps.com)05月21日报道:据WebHosting.info公布的最新数据显示,在4月第4周,全球十五强域名商中,域名总量成功实现净增长的有7家。其中,中法各1家,即中国万网与OVH.NET&…