日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring的组件赋值以及环境属性@PropertySource

發布時間:2025/3/11 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring的组件赋值以及环境属性@PropertySource 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@PropertySource

將指定類路徑下的.properties一些配置加載到Spring當中,

有個跟這個差不多的注解@PropertySources

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PropertySources {PropertySource[] value();}

使用方式,在@Configuration上面加上這個即可,不僅可以加載properties文件,加載Spring的xml也是可以的

@PropertySource(value = "classpath:/test04.properties")

這個是注解的方式,如果還是xml怎么辦,利用context包下標簽即可加入

<context:property-placeholder location="classpath:***.properties"/>

那這個注解是如何加載的呢,專門有個BeanFactoryPostProcessor解析這個注解,PropertySourcesPlaceholderConfigurer,可以自行去看一下源代碼,這里就不介紹了

組件賦值

@Value:1、直接賦值,2、支持SpringEL表達式,3、讀取環境變量數據

//直接賦值@Value("i am bird")private String name;//通過計算賦值@Value("#{24-6}")private Integer age;//通過獲取Environment變量賦值@Value("${bird.name}")private String propertiesName;

SpringEL表達式不僅僅是上面這些,還有許多沒有寫出來,大家可以參考官網docs比較好,避免誤導各位,請單擊SpringEL。

@Autowired:Spring默認取值器(默認按class取值),可作用于set方法上

? 如果容器中有多個同類型的bean,則按同變量名稱BEAN名稱,沒有找到拋異常,可和@Qualifier一同使用,如果容器沒有同類的BEAN,則默認報錯,可調整required值,當required=false則沒有取值為null,優先獲取@Component注入的BEAN

@Resource:javax.annotation包下(默認按變量名稱取值)?也是JSR250的規范中的,可作用于set方法上,?name:按BEAN名稱取值,type:按類型取值,不支持@Primary

@Qualifier:指定從Spring容器獲取指定bean名稱,和@Autowired一起使用

@Primary:當Spring有多個同類型bean時,選中其中一個為默認首選

@Inject:javax.inject包下,屬于JSR330規范中的,需額外引包

<dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency>

這次就簡單的介紹一下就好了,什么在哪里加載賦值的呀,就不細說了,都是基于BeanPostProcessor實現的,可自行調試代碼查看

總結

以上是生活随笔為你收集整理的Spring的组件赋值以及环境属性@PropertySource的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。