上篇入门中简单介绍下springboot启动使用了大量的默认配置,在实际开发过程中,经常需要启动多个服务,那端口如何手动修改呢? 此篇就是简单介绍相关的配置文件信息。

Spring Boot允许外部化你的配置,这样你就可以在不同的环境中使用相同的应用程序代码。你可以使用属性文件、YAML文件、环境变量和命令行参数来外部化配置。属性的值获取可以通过注解@Value 、 spring Environment或注解@ConfigurationProperties

这些方式优先级如下:

  1. @TestPropertySource  / @SpringBootTest#properties  注解用于测试中。
  2. 命令行参数(参数使用--xxx=yyy方式来传递)  
    1. -》 SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar myapp.jar
    2. -》 java -jar myapp.jar --spring.application.json='{"foo":"bar"}'
    3. -》java -jar myapp.jar --foo=bar  --server.port=9090
  3. ServletConfig 初始化参数
  4. ServletContext 初始化参数
  5. 来自java:comp/env的JNDI属性
  6. Java系统属性(System.getProperties()
  7. 操作系统环境变量
  8. RandomValuePropertySource配置的random.*属性值
    1. my.number=${random.int}
      my.bignumber=${random.long}
      my.uuid=${random.uuid}
      my.number.less.than.ten=${random.int(10)}
      my.number.in.range=${random.int[1024,65536]}
  9. jar包外部的application-{profile}.propertiesapplication.yml(带spring.profile)配置文件
  10. jar包内部的application-{profile}.propertiesapplication.yml(带spring.profile)配置文件
  11. jar包外部的application.propertiesapplication.yml(不带spring.profile)配置文件
  12. jar包内部的application.propertiesapplication.yml(不带spring.profile)配置文件
  13. @Configuration注解类上的@PropertySource
  14. 通过SpringApplication.setDefaultProperties指定的默认属性

以上只是springboot提供的方式,在日常工作中最常用的就是*.properties 、 *.yml

一、属性文件配置路径

SpringApplication将加载application.properties,并将它们添加到Spring环境,可以从以下路径加载(优先级):

1、当前项目的/config子目录

2、当前目录

3、classpath的下的/config

4、类的classpath 根目录

注意:

yml是一个类似展示树状结构层次,比较方便查阅。但它需要比较严格的写法要求:属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的;不能使用tab键。

/config优先于classpath根目录、 *.properties 优先 *.yml

二、profile属性文件

在应用程序中有很多配置项,例如数据库连接地址、日志文件位置、应用服务器配置等等。为了安全与灵活性,推荐将配置文件放在生产环境的服务器上,并严格控制访问权限。在运行应用时可以通过参数指定配置文件。

springboot提供规则的命名文件读取来区分环境:application-{profile}.properties

默认的文件是application-default.properties

设定测试环境:application-test.properties

只需要在主application.properties加上配置

spring.profiles.active=test

就读取测试环境配置属性。

三、属性占位符

例如:

app.name=MyApp
app.description=${app.name} is a Spring Boot application

可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)。

通过如${app.name:默认名称}方法还可以设置默认值,当找不到引用的属性时,会使用默认的属性。

由于${}方式会被Maven处理。如果你pom继承的spring-boot-starter-parent,Spring Boot 已经将maven-resources-plugins默认的${}方式改为了@ @方式,例如@name@

四、属性名称匹配规则

例如有如下配置对象:

@Component
@ConfigurationProperties(prefix="person")
public class ConnectionSettings {
private String firstName;
}

firstName可以使用的属性名如下:

  1. person.firstName,标准的驼峰式命名
  2. person.first-name,虚线(-)分割方式,推荐在.properties.yml配置文件中使用
  3. PERSON_FIRST_NAME,大写下划线形式,建议在系统环境变量中使用

五、其它默认配置查看及修改

要调整自己使用的配置,首先要了解springboot maven 引导层级关系

spring-boot-autoconfigure.jar  此为自动加载各种配置的。

tomcat服务相关配置: org.springframework.boot.autoconfigure.web.ServerProperties

spring.mvc的配置:org.springframework.boot.autoconfigure.web.WebMvcProperties

其它web相关配置都在web目录下相对应的类中。

springboot 入门二- 读取配置信息一的更多相关文章

  1. springboot 入门三- 读取配置信息二(读取属性文件方式)

    在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支 ...

  2. springboot 入门八-自定义配置信息(编码、拦截器、静态资源等)

    若想实际自定义相关配置,只需要继承WebMvcConfigurerAdapter.WebMvcConfigurerAdapter定义些空方法用来重写项目需要用到的WebMvcConfigure实现.具 ...

  3. ASP.NET Core的配置(1):读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...

  4. SQL2005SP4补丁安装时错误: -2146233087 MSDTC 无法读取配置信息。。。错误代码1603的解决办法

    是在安装slq2005sp3和sp4补丁的时候碰到的问题. 起先是碰到的错误1603的问题,但网上搜索的1603的解决办法都试过了,google也用了,外文论坛也读了,依然没有能解决这个问题. 其实一 ...

  5. JavaWEB中读取配置信息

    第一种方法是使用java.io和java.util包,缺点是路径的概念要清晰, 例子: Properties prop = new Properties(); InputStream in = get ...

  6. NameValueCollection类读取配置信息

    C#中的NameValueCollection类读取配置信息,大家可以参考下.   我首先介绍配置文件中的写法: 1.在VS2015中的工程下建立一个控制台应用程序,其config文件默认名称为App ...

  7. SpringBoot入门 (二) 属性文件读取

    在上一篇中介绍了在idea中创建springboot工程及使用web工程输出“helloworld”到前端页面,本文学习在springboot工程中读取属性文件中的属性值. 一 自定义属性 在appl ...

  8. springboot读取配置信息、环境变量

    2.读取配置文件 2.1 读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.yml配置文件,读取这两个配置文件的方法 ...

  9. SpringBoot入门 (三) 日志配置

    上一篇博文记录了再springboot项目中读取属性文件中配置的属性,本文学习在springboot项目中记录日志. 日志记录在项目中是很常见的一个功能了,对排查问题有很大帮助,也可以做分类分析及统计 ...

随机推荐

  1. java_final修饰符

    1.修饰变量时,表示该变量一旦获得初始值就不可改变 final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值 实例变量 ...

  2. 防止DDoS攻击的方式

    针对企业的DDoS攻击持续增长,根据Akamai的调查报告,2015年DDoS攻击增长了史无前例的180% !面对 DDoS 攻击性挑战,我们应该建立有效的防御体系来抵御攻击.   1.网站IP减少公 ...

  3. C++ STL set详解

    一.解释 p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; text-align: justi ...

  4. C语言左值,运算符的优先级以及结合性探讨

    刚刚开始看一本书.<C陷阱与缺陷>,相信学习C语言的大家都对这本书有耳闻.今天看到了里面的贪心法则.也即在读到一个字符后,尽可能多的读入更多的字符,直到读入的字符组成的字符串已经不可能再组 ...

  5. jQuery 去空

    //去左右空格; function trim(s){ return s.replace(/(^\s*)|(\s*$)/g, ""); }     //去掉字符串中所有空格(包括中间 ...

  6. 福利 c++ 标准头文件大全

    #include<cmath> #include<math.h> #include<ctype.h> #include<algorithm> #incl ...

  7. ASP.NET Core MVC – 自定义 Tag Helpers

    ASP.NET Core Tag Helpers系列目录,共四篇: ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Hel ...

  8. redis单机安装以及简单redis集群搭建

    安装环境: 两台虚拟机都是Centos 7.0 IP分别为:192.168.149.132  192.168.149.133 Redis采用的版本是redis-3.2.4 集群是采用两台虚拟机模拟8个 ...

  9. websocket 70K连接测试

    websocket 70K连接测试 最近使用socket.io做了一个实时应用,实时性.稳定性还是很让人满意的.如果拿socket.io来做小型应用,综合效率应该是最高的.但是网上少有socket.i ...

  10. HTTP和HTTPS有什么区别? 什么是SSL证书?使用ssl证书优势?

    什么是SSL? SSL是指安全套接层协议(以及传输层协议TLS),位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持,是目前使用最广泛的安全协议.它为互联网或内部网络连接,进行操作的两台 ...