spring boot 获取配置信息的常用方式

spring boot应用程序获取配置文件的配置信息的方法:

1.通过@Value注释获取

2.通过Environment类获取

3.通过@ConfigurationProperties获取

application.properties文件内容:

1 server.port=8080
2 
3 
4 spring.main.banner-mode=off
5 
6 myconfig.mail.port=1234
View Code

 

myconfig.properties文件内容:

1 myconfig.mail.address=localhost
2 myconfig.mail.userName=myuser
View Code

 

HelloController.java文件内容:

 1 import javax.annotation.Resource;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.boot.context.properties.ConfigurationProperties;
 6 import org.springframework.context.annotation.Configuration;
 7 import org.springframework.context.annotation.PropertySource;
 8 import org.springframework.core.env.Environment;
 9 import org.springframework.stereotype.Component;
10 import org.springframework.web.bind.annotation.RequestMapping;
11 import org.springframework.web.bind.annotation.RestController;
12 
13 @RestController
14 public class HelloController {
15     @Resource
16     private Environment environment;
17     
18     @Value("${server.port}")
19     private String port;
20     
21     @Autowired
22     MyconfigProperties myconfig;
23     
24     @RequestMapping("/hello")
25     public String Hello() {
26         System.out.println("server.port=" + environment.getProperty("server.port"));
27         System.out.println("server.port=" + port);
28         
29         System.out.println("address=" + myconfig.getAddress() + ",userName=" + myconfig.getUserName() + ",port=" + myconfig.getPort());
30         
31         return "Hello world!";
32     }
33 }
34 
35 @Component
36 @PropertySource({"classpath:myconfig.properties","classpath:application.properties"})
37 @ConfigurationProperties(prefix= "myconfig.mail")
38 class MyconfigProperties {
39     private String address;
40     private String userName;
41     private Integer port;
42     
43     public Integer getPort() {
44         return port;
45     }
46     public void setPort(Integer port) {
47         this.port = port;
48     }
49     public String getAddress() {
50         return address;
51     }
52     public void setAddress(String address) {
53         this.address = address;
54     }
55     
56     public String getUserName() {
57         return userName;
58     }
59     public void setUserName(String userName) {
60         this.userName = userName;
61     }
62 }
View Code

 除这些方式以外,spring boot还有其他的配置信息方式:

https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/htmlsingle/#boot-features-external-config

Spring Boot allows you to externalize your configuration so you can work with the same application code in different environments. You can use properties files, YAML files, environment variables and command-line arguments to externalize configuration. Property values can be injected directly into your beans using the @Value annotation, accessed via Spring’s Environment abstraction or bound to structured objects via @ConfigurationProperties.

Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:

  1. Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
  2. @TestPropertySource annotations on your tests.
  3. @SpringBootTest#properties annotation attribute on your tests.
  4. Command line arguments.
  5. Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
  6. ServletConfig init parameters.
  7. ServletContext init parameters.
  8. JNDI attributes from java:comp/env.
  9. Java System properties (System.getProperties()).
  10. OS environment variables.
  11. RandomValuePropertySource that only has properties in random.*.
  12. Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
  13. Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
  14. Application properties outside of your packaged jar (application.properties and YAML variants).
  15. Application properties packaged inside your jar (application.properties and YAML variants).
  16. @PropertySource annotations on your @Configuration classes.
  17. Default properties (specified using SpringApplication.setDefaultProperties).
posted on 2020-04-19 01:30  pcant  阅读(1010)  评论(0编辑  收藏  举报