欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot 注解收集 【vaynexiao】

程序员文章站 2024-03-02 23:52:34
...

@Value @ConfigurationProperties

springboot 读取 yml 配置的几种方式
前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springboot 中读取 yml 配置的几种方式

第一种读取方式@value

如果我们只需要配置文件中的一两个值,@Value 是最简单方便的方式.

server:
  port: 8081

我们在代码中可以这样取值

@Value("${server.port}")
public String port;	

注:此处的prot 所在的类需要是一个组件,如果是实体类需要加上@Component

获取值为null的原因

使用static或final修饰了tagValue,如下:

    private static String tagValue;  //错误
    private final String tagValue;    //错误

类没有加上@Component(或者@service等)

    @Component   //遗漏
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }

类被new新建了实例,而没有使用@Autowired

    @Component   
    class TestValue{
         @Value("${tag}")
         private String tagValue;
    }

    class Test{
        ...
        TestValue testValue = new TestValue()
    }

这个testValue中肯定是取不到值的,必须使用@Autowired:

class Test{
	@AutoWired
	TestValue testValue
}

第二种读取方式@ConfigurationProperties

如果需要一个JavaBean 来专门映射配置的话,我们一般会使用@ConfigurationProperties来读取.

student:
    age: 18
    name: mysgk
javabean:
@Component
@ConfigurationProperties(prefix = "student")
public class Student {

    private String name;

    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

使用@ConfigurationProperties,需要配置一个prefix (前缀) 参数, 即写上 key 就可以了.

第三种读取方式@Environment

这种方法好像用的比较少,基本没用过…

test:
    msg: aaa

代码:

    @Autowired
    private Environment env

    @RequestMapping(value = "index2", method = RequestMethod.GET)
    public String index2() {
        System.out.println(env.getProperty("test.msg"));
        return "The Way 2 : "+ env.getProperty("test.msg");
    }
}

SpringBoot 注解收集 【vaynexiao】

相关标签: SpringBoot