SpringBoot 中 yml 文件值的获取
1.基本目录结构
2.相关类代码
Dog.java
package com.lsy.bean;
public class Dog {
private String name ;
private int age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Person.java
package com.lsy.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
// @Value("${person.name}")
private String name ;
// @Value("${person.age}")
private int age ;
private Dog dog ;
private Map<String,Object> maps ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", dog=" + dog +
", maps=" + maps +
'}';
}
}
application.yml
Person :
name : "lsy"
age : 22
dog :
name: "小白"
age: 2
maps : {k1: v1 , k2: v2}
1.方式一 : 当注入的类型只有简单类型时 , 使用 @Value 注解进行赋值
当仅仅注入一些简单类型 使用 @Value 即可 , 直接在 bean 类变量上添加 @Value 注解即可
例 :
@Value("${person.name}")
private String name ;
2.方式二 : 当需要进行注入的类型既有简单类型又有复杂类型 , 即可使用 @ConfigurationProperties(prefix = “xxx”) 进行注入
第一步 : 在 pom.xml 文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
第二步 : 在所需要注入的 bean 上添加注解 @ConfigurationProperties(prefix = “person”),
(注:person 为 yml 文件的前缀 , 不区分大小写)
添加之后即可自动注入
3.@Value和@ConfigurationProperties的区别