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);