Properties-读取配置文件中的内容
新建子项目properties
修改POM
父POM中加上子项目module。
子项目依赖父项目,打包方式jar。
引入spring-boot-configuration-processor
和lombok
(Lombok 的安装与使用)
spring-boot-configuration-processor的作用是生成配置的元数据信息,参考spring-boot-configuration-processor作用。编译后即可在application.yml中使用配置提示。
指定resources路径
完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.glory</groupId><artifactId>myspringboot</artifactId><version>0.0.1-SNAPSHOT</version></parent><packaging>jar</packaging><groupId>com.glory</groupId><artifactId>properties</artifactId><version>0.0.1-SNAPSHOT</version><name>properties</name><description>Properties project for Spring Boot</description><url>https://www.cnblogs.com/Glory1020</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--在 META-INF/additional-spring-configuration-metadata.json 中配置可以去除 application.yml 中自定义配置的红线警告,并且为自定义配置添加 hint 提醒--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional><!-- 表示当前依赖不向下传递 --></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 为什么没加版本号 因为springboot引入了spring-boot-dependencies 则可以不用引入依赖包版本号 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency></dependencies><build><finalName>properties</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></build></project>
补全子项目结构
子项目代码实现
ApplicationProperty
package com.glory.properties.property;import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @description: 项目配置* @author Glory* @date 2025/3/12 11:00*/
@Data
@Component
public class ApplicationProperty {@Value("${application.name}")private String name;@Value("${application.version}")private String version;
}
DeveloperProperty
package com.glory.properties.property;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @description: 开发人员配置信息* @author Glory* @date 2025/3/12 11:00*/
@Data
@ConfigurationProperties(prefix = "developer")
@Component
public class DeveloperProperty {private String name;private String website;private String qq;private String phoneNumber;
}
PropertyController
package com.glory.properties.controller;import cn.hutool.core.lang.Dict;
import com.glory.properties.property.ApplicationProperty;
import com.glory.properties.property.DeveloperProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @description: 测试Controller* @author Glory* @date 2025/3/12 11:00*/
@RestController
public class PropertyController {private final ApplicationProperty applicationProperty;private final DeveloperProperty developerProperty;@Autowiredpublic PropertyController(ApplicationProperty applicationProperty, DeveloperProperty developerProperty) {this.applicationProperty = applicationProperty;this.developerProperty = developerProperty;}@GetMapping("/property")public Dict index() {return Dict.create().set("applicationProperty", applicationProperty).set("developerProperty", developerProperty);}
}
application.yml
server:port: 8080servlet:context-path: /glory
spring:profiles:active: prod
application-dev.yml和application-prod.yml
application:name: dev环境 @artifactId@version: dev环境 @version@
developer:name: dev环境 XXXXXXXXwebsite: dev环境 http://XXXXXXXX.comqq: dev环境 XXXXXXXXphone-number: dev环境 XXXXXXXX
application:name: prod环境 @artifactId@version: prod环境 @version@
developer:name: prod环境 XXXXXXXXwebsite: prod环境 http://XXXXXXXX.comqq: prod环境 XXXXXXXXphone-number: prod环境 XXXXXXXX