Spring2.5中使用注解装配属性
可在Java代码中使用@Resource
或者@Autowired
注解进行装配,但需在XML中配置以下信息
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"
然后显式的配置<context:annotation-config/>
该配置隐式注册了多个对注解进行解析的处理器,如下列举
AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor
其实,注解本身做不了任何事情,和XML一样,只起到配置的作用,主要在于背后强大的处理器
另外,比较建议使用@Resource注解
,而不要使用@Autowired注解
因为@Autowired注解是Spring提供的,而@Resource注解是J2EE提供的
在JDK6中就已经包含@Resource注解了,所以它没有跟Spring紧密耦合
并且在使用Spring时,若使用了JSR-250
中的注解,如@Resource//@PostConstruct//@PreDestroy
那么还需要Spring安装目录中的SPRING_HOME//lib//j2ee//common-annotations.jar包的支持
这里面的@Resource注解就是在SPRING_HOME//lib//j2ee//common-annotations.jar中的
@Resource注解
@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上
@Resource默认按名称装配
,名称可以通过name属性
指定。当找不到与名称匹配的bean时,才会按类型装配
若注解标注在字段上且未指定name属性
,则默认取字段名作为bean名称寻找依赖对象
若注解标注在setter上且未指定name属性
,则默认取属性名作为bean名称寻找依赖对象
如果没有指定name属性,并且按照默认的名称仍找不到依赖对象时,它就会按类型匹配
但只要指定了name属性,就只能按名称装配了
@Autowired注解
@Autowired默认是按类型装配对象的
,默认情况下它要求依赖对象必须存在
如果允许null值,可以设置它的required属性为FALSE,如@Autowired(required=false)
若想要按名称装配,可以结合@Qualifier注解一起使用,如@Autowired(required=false) @Qualifier("personDaoBean")
Spring2.5的组件自动扫描
在一个稍大的项目中通常会有上百个组件,如果都使用XML的bean
定义来配置组件的话
显然会增加配置文件的体积,查找及维护也不方便
而Spring2.5
就为我们引入了组件自动扫描机制
它可以在classpath
下寻找标注了@Service、@Repository、@Controller、@Component注解
的类
并把这些类纳入Spring容器中管理,它的作用和在XML中使用bean节点配置组件是一样的
使用自动扫描机制,则需配置<context:component-scan base-package="com.jadyer"/>
启动自动扫描
其中base-package
指定需要扫描的包,它会扫描指定包中的类和子包里面类
@Service
用于标注业务层组件
@Repository
用于标注数据访问组件,即DAO组件
@Controller
用于标注控制层组件,如Struts中的Action
@Component
泛指组件,当组件不要好归类时,可以使用这个注解进行标注
1、
可以使用诸如@Service("personDao")
修改bean名称
,而它默认的是将首字母小写的类名作为<bean>名称
2、
若要更改<bean>作用域
的话,可以使用@Scope("prototype")
注解来修改<bean>作用域
3、
若想让<bean>实例化之后去执行初始化方法
,可以使用@PostConstruct
标注在方法上
4、
同样@PreDestroy
注解标注在方法上,可以用来指定<bean>销毁时执行的方法
这里的@PostConstruct是EJB3里面用来初始化bean的注解,它也不是Spring中的注解
并且<context:component-scan base-package=""/>的背后注册了很多用于解析注解的处理器
其中就包括了<context:annotation-config/>配置项里面的注解所使用的处理器
所以配置了<context:component-scan base-package="">之后
,便无需再配置<context:annotation-config>
分享到:
相关推荐
struts2.0 spring2.5 hibernate3.2 注解最新框架
配置整合DWR3.0和Spring2.5使用annotation注解
Spring 2.5 基于注解驱动的Spring MVC 开发参考文档
Spring2.5_注解介绍(3.0通用),一齐分享!
spring2.5中文文档 spring2.5中文文档
使用Spring2.5的Autowired实现注释型的IOC , 使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护
spring 2.5 spring 2.5帮助文档 spring 2.5中文帮助文档 spring帮助文档 spring文档
超级详细的SSH2项目实例详解,并且附带两个项目详解。两种注解实现方式。...在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过二个实例,详细的为大家讲解如何实现全注解式的开发。
Spring2.5中文框架开发手册Spring2.5中文框架开发手册Spring2.5中文框架开发手册
精通Spring2.5pdf书籍proSpring2.5
使用 Spring 2.5 基于注解驱动的 Spring.pdf
spring2.5 定时器任务 spring2.5 定时器任务 spring2.5 定时器任务 spring2.5 定时器任务
最近做的Spring 2.5 AOP 例子,保留下以后复习说不定用得上. 1.使用类扫描功能这个有点意思.使用时方便了许多. 2.XML配置方式
java Spring2.5详细注解
Spring Framework 开发参考手册
spring2.5 中文参考手册,chm格式的。
使用Spring 2.5 基于注解驱动的 Spring MVC详解
使用 Spring 2.5 基于注解驱动的 Spring MVC
介绍Spring2.5,3.0注解的详细用法