天天看點

@Configuration,@Value,@ConfigurationProperties注解如何使用

作者:程式猿Clover

一,@Configuration

概述

是spring裡面的類,其實就是取代xml配置執行個體化bean的,是一個配置類,聲明這個類是一個作為配置類,取代xml中的bean注冊對象的,一般和@Bean以及@Scope注解配合使用,将bean對象注入并交給Spring來進行管理,當然他本身也是一個類,由@component修飾,也是一個交給Spring管理的bean,是以也擁有@component功能,可以getBean擷取此對象,有一個屬性proxyBeanMethods,為true的時候,是保持單例對象,為false的時候,是不進行ioc容器的檢查,而是簡單的調用方法建立對象,可能會有多個執行個體對象存在。

注解圖

@Configuration,@Value,@ConfigurationProperties注解如何使用

使用過程

@Configuration,@Value,@ConfigurationProperties注解如何使用

作用

主要是用于注入一些Bean對象到IOC容器,比如注入dateSource,注入一些自己需要配置的類交給Spring來管理,就是bean注冊以及執行個體化的

二,@Value

概述

此注解也是Spring 中的,可以從配置檔案中注入一些屬性到業務層代碼中去,一般是有兩種格式,是${}和#{},一般我們使用的都是${},使用這個變量,可以注入字元串,可以注入list等,都是可以的,類型按照規則比對即可,這也是我們經常需要使用的,是讀取配置檔案中的屬性;#{}使用的就是直接注入目前配置的屬性,或者注入其他bean的屬性,這種用法和情景在平時很少使用。

注解圖

@Configuration,@Value,@ConfigurationProperties注解如何使用

使用過程

${}

@Configuration,@Value,@ConfigurationProperties注解如何使用

#{}

@Configuration,@Value,@ConfigurationProperties注解如何使用

作用

${}主要是使用這個,注入配置檔案中的屬性值,可以支援一些複雜的資料類型,友善注入配置可變的屬性,注意當配置檔案中的屬性不存在的時候,會報錯,我們可以使用給一個預設值,也可以使用下面的@ConfigurationProperties注解進行屬性的注入

三,@ConfigurationProperties

概述

此注解是SpringBoot中的注解,主要是三種使用場景,主要就是也是讀取配置檔案的屬性,這個讀取屬性,可以将屬性統一配置到一個實體類中去,這樣使用的時候,就可以從全局中擷取,不需要我們在各個地方注入,可以統一來進行管理,主要是用于配置檔案中的屬性注入

注解圖

@Configuration,@Value,@ConfigurationProperties注解如何使用

使用過程

屬性注入

注:注入屬性,統一管理,不會報錯,建議和@RefreshScop(是springCloud的注解)注解配置使用,用于可以重新整理配置,當Bean被執行個體化時,@ConfigurationProperties會将對應字首的後面的屬性與Bean對象的屬性比對。符合條件則進行指派。

@Configuration,@Value,@ConfigurationProperties注解如何使用

在配置類的Bean定義

注:這裡便是将字首為“spring.datasource.primary”的屬性,指派給DataSource對應的屬性值。

@Configuration,@Value,@ConfigurationProperties注解如何使用

通過@EnableConfigurationProperties定義為Bean

注:通過@EnableConfigurationProperties對KafkaProperties進行執行個體化時,便會使用到@ConfigurationProperties的功能,對屬性進行比對指派。就可以使用bean注冊,使用bean

@Configuration,@Value,@ConfigurationProperties注解如何使用
@Configuration,@Value,@ConfigurationProperties注解如何使用

作用

主要就是配置問價中的屬性和java類定義的屬性進行綁定在注入,對屬性指派,一般我們建議使用此注解進行注入屬性,而且再Springcloud中可以配合使用,重新整理配置檔案中的值,@value也可以使用,如果隻是一個屬性的話,可以建議使用

@EnableConfigurationProperties

其實這個注解就是和@ConfigurationProperties注解配合使用,進行屬性注入的綁定,就是将配置檔案中的屬性和@ConfigurationProperties修飾的類進行屬性綁定,并交給到Spring來進行管理,當然 也可以隻使用@ConfigurationProperties并使用@Component修飾,交給spring來進行管理,也可以的。一般我們是這樣使用的,不過可以看下KafkaProperties的使用,就可以發現是使用了這種配合的注解

四,總結

主要是講解屬性注入的使用,我們可以根據不同的場景使用不同的配置進行合理的使用注解,沒有最好的,隻有合适才是最好的

繼續閱讀