java注解管理_JavaSpring【四、Bean管理注解实现】
前面講的Bean相關配置全部是使用xml配置文件或實現接口來實現的,接下來將比較常用的用法,使用注解實現bean的注入和管理
內容包括
ClassPath掃描與組件管理
類的自動檢測與注冊bean
context:annotation-config
@Component、@Repository、@Service、@Controller
@AutoWired、@Required
@Qualifier
@Configuration、@Bean
@ImportResource("")、@Value
@Resource
ClassPath掃描與組件管理
從spring3.0開始可以使用java注解來定義bean,而非xml,如@Configuration、@Bean、@Import、@DependsOn
@Conponent是一個通用注解,可用于任何Bean
@Repository DAO層(持久層)注解
@Service Service層(服務層)注解
@Controller MVC控制層注解
注冊在類上的注解,可以被spring自動檢測并注冊到ApplicationContext中,注冊在成員變量或方法上的注解可以被自動裝載
類的自動檢測
1、以下語句需要在springxml中配置,即可使用注解
context:annotation-config
context:component-scan(一般配置此配置,配置檢測路徑,會包含annotation-config)
2、使用過濾器進行自定義掃描
默認情況下,類被自動發信并注冊bean的條件是:使用@Component、@Repository、@Service、@Controller注解或使用@Component注解的自定義注解
可使用過濾器修改掃描規則,如用某字符替換某注解,context:include-filter、context:exclude-filter、ues-default-filter(禁用自動發現與注冊)
filter類型(type)
annotation 注解
assignable 類
aspectj
regex 正則表達式
custom
Demo
1、修改xml文件
2、在需要注冊的類上做注解(這里注解只能自動注冊類,省去了xml配置,但不能自動裝載,還是需要通過ApplicationContext獲取)
service中的dao類,因為有構造,可以自動裝載,若無構造,需使用autowired
3、測試運行
@AutoWired、@Required——自動裝載bean
AutoWired可以注解成員變量,使其自動裝載(不用使用構造)
當裝載List時,會裝載所有List泛型類型的類,若想使其有序,可使用@Order注解所有泛型類型的實現類,用1,2,3標記
若注解必須找到實現類,則可使用@Autowired(required = true) 或@Required(set方法注解)
@Qualifier——縮小范圍
定義掃描的實現類名稱,即使有其他實現類,也可以只裝配該類
Qualifier——適用于成員變量,構造,多參方法
Resource——適用于成員變量,單參setter
@Bean基于Java的容器注解
使用在xml中配置bean標簽的方式可以將類注冊到ioc容器中;使用@Configuration注解+@Bean注解可以實現同樣的效果
@ImportResource("")、@Value——資源引用
如jdbc的配置引入,可在Configuration文件上引入資源,然后對成員變量進行Value注解,讀取資源文件中的key對于的值,再使用@Bean注冊
如@ImportResource("classpath:/com/shane/spring/properties-config.xml")、@Value("${jdbc.url}")、@Value("${jdbc.username}")、@Value("${jdbc.password}")
@Resource、@PostConstruct、@PreDestory
@Resource使用與@Autowired差不多,有以下區別
1、@Autowired與@Resource都可以用來裝配bean. 都可以寫在字段上,或寫在setter方法上。
2、@Autowired默認按類型裝配(這個注解是屬業spring的),默認情況下必須要求依賴對象必須存在,如果要允許null 值,可以設置它的required屬性為false
3、@Resource(這個注解屬于J2EE的),默認安照名稱進行裝配,名稱可以通過name屬性進行指定,
如果沒有指定name屬性,當注解寫在字段上時,默認取字段名進行按照名稱查找,如果注解寫在setter方法上默認取屬性名進行裝配。 當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配
@Inject——需要引入包,等效于Autowired,與@Named配合使用
總結
以上是生活随笔為你收集整理的java注解管理_JavaSpring【四、Bean管理注解实现】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模块式开发 java_Java9系列第8
- 下一篇: java编程double相乘_浅谈Jav