快速业务通道

使用Spring注解注入属性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

使用Spring注解注入属性

时间:2011-03-23 JavaEye博客 kenshin54

1.1. 使用注解以前我们是怎样注入属性的

类的实现:

public class UserManagerImpl implements UserManager {      private UserDao userDao;      public void setUserDao(UserDao userDao) {          this.userDao = userDao;      }      ... }

配置文件:

< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl">      < property name="userDao" ref="userDao" /> < /bean> < bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">      < property name="sessionFactory" ref="mySessionFactory" /> < /bean>

1.2. 引入@Autowired注解(不推荐使用,建议使用@Resource)

类的实现(对成员变量进行标注)

public class UserManagerImpl implements UserManager {      @Autowired      private UserDao userDao;      ... }

或者(对方法进行标注)

public class UserManagerImpl implements UserManager {      private UserDao userDao;      @Autowired      public void setUserDao(UserDao userDao) {          this.userDao = userDao;      }      ... }

配置文件

< bean id="userManagerImpl" class="com.kedacom.spring.annotation.service.UserManagerImpl" /> < bean id="userDao" class="com.kedacom.spring.annotation.persistence.UserDaoImpl">      < property name="sessionFactory" ref="mySessionFactory" /> < /bean>

@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。以上两种不同实现方式中,@Autowired的标注位置不同,它们都会在Spring在初始化userManagerImpl这个bean时,自动装配userDao这个属性,区别是:第一种实现中,Spring会直接将UserDao类型的唯一一个bean赋值给userDao这个成员变量;第二种实现中,Spring会调用 setUserDao方法来将UserDao类型的唯一一个bean装配到userDao这个属性。

1.3. 让@Autowired工作起来

要使@Autowired能够工作,还需要在配置文件中加入以下代码

< bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />

使用Spring注解注入属性(2)

时间:2011-03-23 JavaEye博客 kenshin54

1.4. @Qualifier

@Autowired是根据类型进行自动装配的。在上面的例子中,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出 BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。

a. 可能存在多个UserDao实例

@Autowired public void setUserDao(@Qualifier("userDao") UserDao userDao) {      this.userDao = userDao; }

这样,Spring会找到id为userDao的bean进行装配。

b. 可能不存在UserDao实例

@Autowired(required = false) public void setUserDao(UserDao userDao) {      this.userDao = userDao; }

1.5. @Resource(JSR-250标准注解,推荐使用它来代替Spring专有的@Autowired注解)

Sp

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号