相關(guān)知識(shí)點(diǎn)
- Profile
- @Conditional
- Addressing ambiguity in autowiring 注入歧義性
- Bean Scoping
Spring Profile
類(lèi)似于maven的profile琉雳,需要指定spring.profile.default/spring.profile.active來(lái)激活profile
條件注入
spring4 提供的注解样眠,可以條件化的注入bean
注入的歧義
當(dāng)注入有歧義的時(shí)候會(huì)拋出org.springframework.beans.factory.NoUniqueBeanDefinitionException
可以使用@Qualifier
限定 或者@Primary
來(lái)指定優(yōu)先級(jí)
更高級(jí)的用法( 特殊的場(chǎng)景),由于Java不能多次使用同一個(gè)注解翠肘,可以通過(guò)自定義注解來(lái)限定檐束。
Bean作用域
在寫(xiě)這篇筆記之前,業(yè)務(wù)就出現(xiàn)了一次一個(gè)static變量重復(fù)賦值導(dǎo)致的線上問(wèn)題束倍,有同事說(shuō)是static的問(wèn)題被丧,但是這里如果不是static變量
還是會(huì)有這個(gè)問(wèn)題(該變量是類(lèi)屬性),由于spring創(chuàng)建bean默認(rèn)是singleton模式的绪妹,所以每次都是這個(gè)bean的變量被賦值到也會(huì)造成同樣的問(wèn)題甥桂。
不過(guò)spring還是提供了四種bean的作用域供我們選擇:
- Singleton
One instance of the bean is created for the entire application. - Prototype
One instance of the bean is created every time the bean is injected into or retrieved from the Spring application context.
每次注入或者從context中獲取到的都是新對(duì)象 - Session
In a web application, one instance of the bean is created for each session. - Request
In a web application, one instance of the bean is created for each request.