SpringBoot项目中获取配置文件的配置信息

系统配置文件 application.yaml或者 application.properties 中的属性值

假如我们配置文件.yaml的信息是

myconfig:
  username: abc
  password: 123

 或者.properties

myconfig.username=abc
myconfig.password=123

1.通过@Value

类需要被spring扫描到

@Component
public class MyConfig {
    @Value("myconfig.username")
    private String name;
    @Value("myconfig.password")
    private String password;
}

@Value()可以设置默认值

@Value("myconfig.username:admin") //当没有配置 myconfig.username的时候默认值是 admin
 @Value("myconfig.username:") //默认值是空字符串

2.通过Environment

@Component
public class MyConfig {
    @Autowired
    private Environment environment;

    public String getUsername() {

        return environment.getProperty("myconfig.username");
    }
    public String getPassword() {

        return environment.getProperty("myconfig.password");
    }
}

Environment也可以设置默认值

environment.getProperty("myconfig.username",“admin”)//没有配置myconfig.username的话默认值是admin

3.使用@ConfigurationProperties

先在主类加上启动配置注解 @EnableConfigurationProperties

@SpringBootApplication
@EnableConfigurationProperties
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

编写获取配置信息的类

@Component
@ConfigurationProperties(prefix = "myconfig")
//@PropertySource(value = "classpath:application.yml") 如果配置信息在其他配置文件中需要把文件名写在这
public class MyConfig {

    private String username;
    private String password;
}

@Component 表示将该类标识为Bean

@ConfigurationProperties(prefix = "myconfig")用于绑定属性,其中prefix表示所绑定的属性的前缀。

@PropertySource(value = "classpath:application.yml")表示配置文件路径。springboot能自动加载到的配置文件不用写 比如application.yml,application.properties,bootstrap.yml,bootstrap.properties,application-dev.yml。。。。

正文到此结束
评论插件初始化中...
Loading...