1. 程式人生 > 其它 >Spring Boot中註解@ConfigurationProperties

Spring Boot中註解@ConfigurationProperties

在Spring Boot中註解@ConfigurationProperties有三種使用場景,而通常情況下我們使用的最多的只是其中的一種場景。本篇文章帶大家瞭解一下三種場景的使用情況。

場景一
使用@ConfigurationProperties和@Component註解到bean定義類上,這裡@Component代指同一類例項化Bean的註解。

基本使用例項如下:

// 將類定義為一個bean的註解,比如 @Component,@Service,@Controller,@Repository
// 或者 @Configuration
@Component
// 表示使用配置檔案中字首為user1的屬性的值初始化該bean定義產生的的bean例項的同名屬性
// 在使用時這個定義產生的bean時,其屬性name會是Tom
@ConfigurationProperties(prefix = "user1")
public class User {
	private String name;
	// 省略getter/setter方法
}

對應application.properties配置檔案內容如下:

user1.name=Tom

在此種場景下,當Bean被例項化時,@ConfigurationProperties會將對應字首的後面的屬性與Bean物件的屬性匹配。符合條件則進行賦值。

場景二
使用@ConfigurationProperties和@Bean註解在配置類的Bean定義方法上。以資料來源配置為例:

@Configuration
public class DataSourceConfig {

	@Primary
	@Bean(name = "primaryDataSource")
	@ConfigurationProperties(prefix="spring.datasource.primary")
	public DataSource primaryDataSource() {
		return DataSourceBuilder.create().build();
	}

}

這裡便是將字首為“spring.datasource.primary”的屬性,賦值給DataSource對應的屬性值。

@Configuration註解的配置類中通過@Bean註解在某個方法上將方法返回的物件定義為一個Bean,並使用配置檔案中相應的屬性初始化該Bean的屬性。

場景三
使用@ConfigurationProperties註解到普通類,然後再通過@EnableConfigurationProperties定義為Bean。

@ConfigurationProperties(prefix = "user1")
public class User {
	private String name;
	// 省略getter/setter方法
}

這裡User物件並沒有使用@Component相關注解。

而該User類對應的使用形式如下:

@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

上述程式碼中,通過@EnableConfigurationProperties對User進行例項化時,便會使用到@ConfigurationProperties的功能,對屬性進行匹配賦值。