天天看点

【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