天天看點

【spring架構】spring的幾個Annotation實作(上)

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