1. 程式人生 > >springboot讀取配置檔案的配置項值

springboot讀取配置檔案的配置項值

三種方式讀取: (一) 通過springboot帶有的Environment 類讀取

(二) 通過使用@Value讀取

(三) 通過新增一個配置類,使用@ConfigurationProperties讀取 使用步驟: ① 新增一個配置類,在類名上面使用@ConfigurationProperties;若讀取的配置檔案不是預設的application.properties,則需再新增@PropertySource(“xxx.properties”)註解 ② 在引導類上面新增;@EnableConfigurationProperties(value=類名.class) ③ 使用;在需要的地方使用@Autowired注入該物件即可

程式碼:

引導類:

@SpringBootApplication
//方式三需要新增該註解
@EnableConfigurationProperties(MyProperties.class)
public class Application {

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

}

測試類:

@RestController
public class DemoController {
	
	@Autowired
	private Environment environment;
	
	@Value("${spring}")
	private Integer password;
	@Value("${spring.activemq.user}")
	private String userName;
	
	@Autowired
	private MyProperties myProperties;
	
	@RequestMapping("/test")
	public String demo() {
		
		// 方式一
		System.out.println("方式一---------"+environment.getProperty("spring.env.pass"));
		System.out.println("方式一--------"+environment.getProperty("spring.env.user"));
		
		//方式二
		System.out.println("方式二---------"+password);
		System.out.println("方式二---------"+userName);
		
		//方式三
		System.out.println("方式三---------"+myProperties.getSex());
		System.out.println("方式三---------"+myProperties.getUrl());
		
		return "successful";
	}
}

方式三的配置類:

/**
 * @ConfigurationProperties 獲取application.properties檔案中配置項值
 * prefix表示配置檔案中的配置項字首
 * ignoreUnknownFields表示是否忽略在檔案中但是本類又沒有屬性對應的情況
 * 
 * @PropertySource 獲取配置檔名    如果是預設配置檔案application.properties或application.yml,則可以省略該註解
 */

@ConfigurationProperties(prefix="spring.my",ignoreUnknownFields=true)
@PropertySource("app.properties")
public class MyProperties {
	private String url;
	private String sex;
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
}

配置檔案: 預設的application.properties

spring.env.pass=88888
spring.env.user=jack
spring=12356
spring.activemq.user=zeng11

自定義的配置檔案app.properties:

spring.my.url=www.baidu.com
spring.my.sex=male

pom.xml檔案

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.17.RELEASE</version>
	</parent>
  
  <groupId>com.abc.springboot</groupId>
  <artifactId>spring-boot</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo</name>
  <dependencies>
  	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<!-- 支援熱部署(快速重啟) -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<!-- 不向下傳遞依賴 -->
		<optional>true</optional>
	</dependency>
  </dependencies>
  
</project>