SpringBoot默认读取项目下名字为application开头的 yml yaml properties配置文件
在项目下的application.properties里修改端口号和项目上下文路径
注意,这里的每一个. 都代表一个层级
此时接口的访问路径为:http://127.0.0.1:8081/springboot1/test/getTest
SpringBoot常见配置
查看官网文档https://docs.spring.io/spring-boot/docs/2.7.10/reference/html/application-properties.html#appendix.application-properties.server
注意,application.properties里的每一个. 都代表一个层级 转换成yml之后,使用缩进代表层级关系
① 大小写敏感
② 使用缩进代表层级关系
③ 相同的部分只出现一次
④ 注意空格
server:
port: 8081
student:
name: zhangsan
age: 18
address: beijing
#或者写成json格式
animal:
{name: monkey,age: 3 }
city:
- beijing
- tianjin
- shanghai
- chongqing
#或者
city2: [beijing,tianjin,shanghai,chongqing]
如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
config/application.properties
config/application.yml
application.properties
application.yml
resources/config/application.properties
resources/config/application.yml
resources/application.properties
resources/application.yml
Spring Boot 中有两种上下文对象,一种是 bootstrap, 另外一种是 application(ServletContext), bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton
。bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
①boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载。
②boostrap 里面的属性不能被覆盖。
application 配置文件主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
①使用 SpringCloudConfig 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
②一些固定的不能被覆盖的属性。
③一些加密/解密的场景。
user.a.name=zhangssan
user.a.age=18
user.a.address=beijingshichangpingqu11
package com.buba.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @author qlx
*/
@Data
@Component
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "user.a")
public class User {
private String name;
private Integer age;
private String address;
}
@Autowired
private User user;
@GetMapping("/selectNameAll")
public String selectNameAll() {
return user.getName();
}
在开发 SpringBoot项目的时候,可能有这样的情况,一套程序需要在不同的环境中发布,数据库配置、端口配置或者其他配置各不相同,如果每次都需要修改为对应环境配置,不仅耗费人力,而且特别容易出现错误,造成不必要的麻烦。
通常情况下,我们可以配置多个配置文件,在不同的情况下进行替换。而在 Spring Boot项目
中,我们新建几个配置文件,文件名以application-{name}.properties的格式,其中的{name}对应环境标识,比如:
然后,可以在主配置文件(applicationproperties)中配置spring.profiles.active来设置当前要使用的配置文件。
比如,在主配置文件中配置本次指定使用的配置文件后缀,配置内容如代码清单所示。
spring:
profiles:
active: dev
在工程的资源文件夹下创建一下四个文件
spring:
profiles:
active: dev
server:
port: 8081
server:
port: 8082
server:
port: 8083
启动后观察控制台日志打印当前工程的实际端口号