javascript
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、讀取環(huán)境變量數(shù)據(jù)
//直接賦值@Value("i am bird")private String name;//通過計算賦值@Value("#{24-6}")private Integer age;//通過獲取Environment變量賦值@Value("${bird.name}")private String propertiesName;SpringEL表達式不僅僅是上面這些,還有許多沒有寫出來,大家可以參考官網(wǎng)docs比較好,避免誤導各位,請單擊SpringEL。
@Autowired:Spring默認取值器(默認按class取值),可作用于set方法上
? 如果容器中有多個同類型的bean,則按同變量名稱BEAN名稱,沒有找到拋異常,可和@Qualifier一同使用,如果容器沒有同類的BEAN,則默認報錯,可調(diào)整required值,當required=false則沒有取值為null,優(yōu)先獲取@Component注入的BEAN
@Resource:javax.annotation包下(默認按變量名稱取值)?也是JSR250的規(guī)范中的,可作用于set方法上,?name:按BEAN名稱取值,type:按類型取值,不支持@Primary
@Qualifier:指定從Spring容器獲取指定bean名稱,和@Autowired一起使用
@Primary:當Spring有多個同類型bean時,選中其中一個為默認首選
@Inject:javax.inject包下,屬于JSR330規(guī)范中的,需額外引包
<dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency>這次就簡單的介紹一下就好了,什么在哪里加載賦值的呀,就不細說了,都是基于BeanPostProcessor實現(xiàn)的,可自行調(diào)試代碼查看
總結(jié)
以上是生活随笔為你收集整理的Spring的组件赋值以及环境属性@PropertySource的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Springboot与Spring的关系
- 下一篇: Linux 软件安装到 /usr,/us