spring除了xml的配置,還可以用annotation注解來實作spring的配置功能,下面來介紹裡面一些配置方法
1.annotation第一步
a)修改xml檔案,參考文檔<context:annotation-config/>
基于注解(annotation-based)的配置
在 spring 2.5中已經可以用注解的方式去驅動 spring 的依賴注射了。更重要的是,@autowired注解提供了與第 3.3.5 節 “自動裝配(autowire)協作者”一節中描述的同樣功能,并且提供了更細緻的控制與更好的适應性。spring 2.5 也支援 jsr-250 中的一些注解,例如@resource,@postconstruct,以及@predestroy。
(加載了<context:annotation-config/>就相當于隐式注冊 post-processors, 包括了 autowiredannotationbeanpostprocessor,commonannotationbeanpostprocessor,persistenceannotationbeanpostprocessor,也包括了前面提到的requiredannotationbeanpostprocessor四個bean,用來完成注解的加載)
加了:xmlns:context="http://www.springframework.org/schema/context"
與<context:annotation-config/>
xsd定義了它所控制的xml都能寫什麼,就是我們目前檔案的命名空間(裝着我能寫的名字)
2.autowired
a)預設按類型by type
例子:
注意,此時userservice的bean裡面并沒有加id=u的bean。我們用注解來進行autowired
在userservice的getuserdao方法上面加注解@autowired(預設bytype)
測試:
userdaoimpl.java:改寫了tostring方法,傳回daoid
測試結果:
daoid=1
也就是用annotation也可以實作autowired
b)如果想用byname,使用@qulifier
如果有好幾個type一樣的,就應該用byname了:
在userservice的getuserdao方法的參數前加@qualifier("xx"),其中
"xx"是相應bean的id
userservice.java:
結果:
daoid=2
說明注解@qualifier("u2")起到了作用
c)寫在private filed(第三種輸入形式)(不建議,破壞封裝)
@autowired(required=false)就是可以去自動擷取,如果沒有也可以不要(可有可無)
d)如果寫在set上,@qualifier需要寫在參數上
補充:
前面在xml中提到的ini-method和的destroy-method用注解實作就是在相應方法上加:
@postconstruct與@predestroy
@scope("xxx")裡面指定是用什麼樣的生命範圍(singleton、prototype)
尊重開源精神,尊重勞動成果,轉載請注明出處:http://blog.csdn.net/acmman/article/details/43889483