获取配置文件内容的方式:1、使用@ConfigurationProperties注解标识一个类为配置文件类,标识此注解的类中的所有属性都是配置文件中的相关属性,默认从全局配置文件中获取值 。此注解的prefix值对应配置文件中的标识,此外需要将此类添加到Spring容器中,需要使用@Component注解 。详细代码如下:
@Data@ToString@Component@ConfigurationProperties(prefix = "people")public class People { private String nickName; private Integer age; private Boolean status; private Date birth; private Map<String, Object> maps; private List<Object> lists; private Pet pet;} @Data@ToStringpublic class Pet { private String name; private String age;} 对应的yml配置文件如下:
【Spring Boot配置文件详解】people: # 等价写法:nickName nick-name: brevity age: 22 status: true birth: 2022/12/22 maps: {k1: v1,k2: 22} lists: - 11 - 22 - 33 pet: name: snake age: 200
所需的maven依赖:
<!-- 配置文件处理器 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency><!-- lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>测试代码:
System.out.println(people);2、使用@Value注解获取配置文件中的值,支持${key}与#{spEL}表达式,不支持复杂数据类型的取值(如:Map、List、Set、对象等),代码如下:
// @Validated表示此类启用数据校验@Validatedpublic class People{ // nick-name 必须与配置文件的写法一致 @Value("${people.nick-name}") private String nickName; @Value("#{10*2}") private Integer age;} 综上所述,如果是需要获取配置文件中基本类型的某个值,建议使用@Value注解;如果需要和配置文件中的复杂数据结构进行映射或含有复杂结构的数据,如Map、List、对象等,则推荐使用JAVABean进行映射,使用@ConfigurationProperties与@Component对此JavaBean进行标识与注册 。 3、使用@PropertySource注解读取指定的配置文件,示例代码如下: @Data@ToString@Component@ConfigurationProperties(prefix = "people")@PropertySource(value = https://www.isolves.com/it/cxkf/kj/2023-02-23/{"classpath:people.properties"})public class People { private String nickName; private Integer age; private String email; private Boolean status; private Date birth; private Map
推荐阅读
- Spring MVC核心功能异常处理机制原理详解
- 详细聊聊Spring核心思想
- 小米fastboot模式怎么进入?小米手机开机显示fastboot怎么办?
- bootstrap登录注册界面(bootstrap登录界面实例)
- Maven从入门到精通 pringBoot搭建SSM项目的完整过程 !
- 想用好 DDD 必须先过 Spring Data 这关
- SpringBoot如何实现接口幂等性操作?
- SpringBoot 如何保证接口安全?
- goframe和go-spring怎么选
- Springboot整合Jersey实现REST full风格API及原理
