Spring Boot读取Yml配置文件的3种方法

1 基础用法,使用@Value注解直接注入配置信息

    @Value("${spring.datasource.username}")
    private String name;

2 使用注解@Autowired注入Environment类

    @Autowired
    private Environment environment;

        String username = environment.getProperty("spring.datasource.username");

3 定义一个工具类,使用@Component注解成为配置类,再继承ApplicationRunner 重写run(),再注入Environment 类获取配置,可以做到在任何地方随时随地获取配置信息

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
@Order(2)
public class BaseConfig implements ApplicationRunner {
    @Autowired
    private Environment environment;
    
    public static String port;


    @Override
    public void run(ApplicationArguments args) throws Exception {
        port=environment.getProperty("server.port");

        System.out.println("------ " + port);
    }
}

使用的时候直接调用静态类,程序一次读取,使用的时候调用

4 读取配置封装成配置类

package com.zls.zzz.utils;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "person")
public class Personex {
    private  String lastName;
    private  String age;


    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getAge() {
        return age;
    }

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

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

配置文件
person:
  lastName: hello
  age: 19

  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息
 

 

调用代码

    @Autowired
    private Environment environment;

    @Autowired
    private BaseConfig baseConfig;

    @Autowired
    private Personex personex;


    @Value("${spring.datasource.username}")
    private String name;

        String username = environment.getProperty("spring.datasource.username");
        System.out.println(username);
        System.out.println(name);


        System.out.println(baseConfig.port);

        System.out.println(personex);

 

posted @ 2022-11-01 16:39  谭志宇  阅读(1143)  评论(0编辑  收藏  举报