pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
启动类
@SpringBootApplication
@ConfigurationPropertiesScan(value = {"com.example.springbootdemo.config"})
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
@ConfigurationPropertiesScan 标注配置类所在包
配置类
package com.example.springbootdemo.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
import java.util.Map;
@ConfigurationProperties(prefix = "global.config")
@Data
public class ApplicationConfig {
private String demoMes;
private Integer demoVersion;
private List<String> demoList;
private Map<String, String> demoMap;
private Map<String, List<String>> demoMap2;
private Map<String, Map<String, String>> demoMap3;
}
配置文件
global:
config:
demo-mes: String
demo-version: 1
demo-list:
- 1
- 2
demo-map:
user: tom
age: 18
demo-map2:
addr:
- 上海
- 广州
demo-map3:
name:
age: 18
addr: 北京
demoMap4:
- name: zhangsan
- age: 18
注意配置文件key要与配置类的变量名称相对应
测试类
@SpringBootTest
@RunWith(SpringRunner.class)
class SpringbootdemoApplicationTests {
@Autowired
private ApplicationConfig config;
@Test
public void contextLoads() {
// List
List<String> demoList = config.getDemoList();
System.out.println("DemoList: " + demoList);
// Map<String, String>
Map<String, String> demoMap = config.getDemoMap();
for (Map.Entry<String, String> entry : demoMap.entrySet()) {
System.out.println("demoMap: " + entry.getKey() + " " + entry.getValue());
}
// Map<String, List<String>>
Map<String, List<String>> demoMap2 = config.getDemoMap2();
for (Map.Entry<String, List<String>> entry : demoMap2.entrySet()) {
System.out.println("demoMap2:" + entry.getValue());
}
// Map<String, Map<String, String>>
Map<String, Map<String, String>> demoMap3 = config.getDemoMap3();
for (Map.Entry<String, Map<String, String>> entry : demoMap3.entrySet()) {
for (Map.Entry<String, String> stringEntry : entry.getValue().entrySet()) {
System.out.println("demoMap3:" + stringEntry.getKey() + " " + stringEntry.getValue());
}
}
// List<Map<String, String>>
List<Map<String, String>> demoMap4 = config.getDemoMap4();
for (Map<String, String> map : demoMap4) {
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("demoMap4:" + entry.getKey() + " " + entry.getValue());
}
}
// String
System.out.println("DemoMes: " + config.getDemoMes());
// Integer
System.out.println("DemoVersion: " + config.getDemoVersion());
}
}
测试类输出:
List
DemoList: [1, 2]
Map<String, String>
demoMap: user tom
demoMap: age 18
Map<String, List<String>>
demoMap2:[上海, 广州]
Map<String, Map<String, String>>
demoMap3:age 18
demoMap3:addr 北京
List<Map<String, String>>
demoMap4:name zhangsan
demoMap4:age 18
String
DemoMes: String
Integer
DemoVersion: 1