springboot 入门二- 读取配置信息一

上篇入门中简单介绍下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默认的${}方式改为了@ @方式,例如@[email protected]

四、属性名称匹配规则

例如有如下配置对象:

@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目录下相对应的类中。

时间: 2024-10-24 09:52:33

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

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

在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支持,但不支持spEL 定义appConfig接收(需要set get方法) @Component@ConfigurationProperties(value = "my")public class AppConfig {    private String name;    private

读取配置信息

ASP.NET Core的配置(1):读取配置信息 提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中.到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式.总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源.我们可以采用内存的变量作为配置的数据源,也可以直

JavaWEB中读取配置信息

第一种方法是使用java.io和java.util包,缺点是路径的概念要清晰, 例子: Properties prop = new Properties(); InputStream in = getClass().getResourceAsStream("/common.properties"); try { prop.load(in); pool = new JedisPool(config, prop.getProperty("pay.redis.url"))

SpringBoot入门二,添加JdbcTemplate数据源

项目基本配置参考上一篇文章SpringBoot入门一,使用myEclipse新建一个SpringBoot项目即可.现在来给项目添加一个JdbcTemplate数据源,添加方式非常简单,仅需两步即可,具体内容如下: 1. pom.xml添加以下配置信息 <!-- jdbcTemplate依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring

SpringBoot入门二十,添加Websocket支持

项目基本配置参考SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可.此示例springboot的版本已经升级到2.2.1.RELEASE,具体步骤如下: 1. pom.xml添加以下配置信息 <!-- 4. 引入websocket支持 --> <dependency> <groupId>org.springframework.boot</groupId> <ar

SpringBoot入门二十二,使用Validation进行参数校验

项目基本配置参考文章SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可,此示例springboot升级为2.2.1版本. 1. pom.xml添加aop支持 如果已经引用了spring-boot-starter-web,就不要需要引用spring-boot-starter-validation了,本例就不再引用 <!-- 引入validation支持 --> <dependency> <

SpringBoot入门二十三,整合Redis

项目基本配置参考文章SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用MyEclipse新建一个SpringBoot项目即可,此示例springboot升级为2.2.1版本. 1. pom.xml添加Redis支持 <!-- 5.引入redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b

使用Apache Commons Configuration读取配置信息

在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache Commons Configuration framework. 你会了解到 ·从XML文件中获取数据 ·访问环境变量 ·连接不同类型的配置信息(基于XML的,基于环境变量的,等等) ·在程序改变后自动重新加载配置. 在我们的示例中将会使用XML文件和环境变量的两种方式存储一个数据库的配置信息(开发.测试.产品,等等).接下来你将会看到具体的内容,但是首先先配置一下Ma

[微信开发] - 从最新的appid,appsecret读取配置信息

设置好form表单,填写参数传入Java后端做为实例bean,接着存储倒数据库. 当微信端接口配置提交时,Java接口从数据库获取最新的配置信息,可以根据increaseID,也可以设置时间段, 这里的问题是,在获取实例的那条SQL语句找不到了, selectByIncreaseId() 看了看Mapper中(DAO层) @Mapper public interface WxApiConfigMapper { int deleteByPrimaryKey(Integer id); int ins