`
8366
  • 浏览: 809221 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第11讲 --用@Resource注解完成属性装配

阅读更多

bean的注入方式有3种:

 

 

第一种:使用构造器注入
第二钟:使用属性setter方法注入
第三种:使用Field注入(用于注解方式)

 

 

下面我们使用注解的方式完成bean的注入

 

在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:@Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
    @Autowired
    private PersonDao  personDao;//用于字段上
    @Autowired
    public void setOrderDao(OrderDao orderDao) {//用于属性的setter方法上
        this.orderDao = orderDao;
    }
@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
    @Autowired  @Qualifier("personDaoBean")
    private PersonDao  personDao;

@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上,但它默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
    @Resource(name=“personDaoBean”)
    private PersonDao  personDao;//用于字段上

注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

 

 

步骤:

(1).修改beans.xml

在java代码中使用@Autowired或@Resource注解方式进行装配。但我们需要在xml配置文件中配置以下信息: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config/> </beans>


 这个配置隐式注册了多个对注释进行解析处理的处理器:AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor
      注: @Resource注解在spring安装目录的lib\j2ee\common-annotations.jar

 

   <context:annotation-config/>  必不可少
      

(2) 使用@Resource来 注释我们在beans.xml种声明的bean, @Autowired,前者是jdk的api,后者是spring的api,使用前者可以不依赖spring的特性,我们也可以给 属性PersionDao 加上set方法,然后使用@Resource来注释这个set方法,一可以有同样的效果

 

package cn.com.xinli.service.impl; import javax.annotation.Resource; import org.apache.log4j.Logger; import cn.com.xinli.dao.PersionDao; import cn.com.xinli.service.PersionSevice; public class PersionServiceBean implements PersionSevice { Logger log=Logger.getLogger(PersionServiceBean.class); @Resource private PersionDao persionDao; private String name; public PersionServiceBean() { log.info("我被实例化了"); } public PersionServiceBean(PersionDao persionDao, String name) { this.persionDao = persionDao; this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public PersionDao getPersionDao() { return persionDao; } public void setPersionDao(PersionDao persionDao) { this.persionDao = persionDao; } public void init() { log.info("初始化资源"); } public void save() { log.info("name:"+name); this.persionDao.add(); } public void destory() { log.info("释放资源"); } }


 

 

 

 (3)测试,结果略!

分享到:
评论
1 楼 qq308745107 2011-03-08  
thank you .

相关推荐

    spring2.5 学习笔记

    #### 第十一课:Spring 整合 SSH - **整合流程**: - 加入所需的 jar 包。 - 整合 Spring + Hibernate。 - 整合 Struts2。 - **Struts2 常量配置**:介绍如何配置 Struts2 的全局常量。 #### 第十二课:DTO、VO ...

    千锋最新版spring6.0框架GA版详解.pdf

    使用@Autowired、@Resource等注解进行依赖注入。 4. **注解开发管理第三方bean** 通过@ComponentScan注解扫描指定包下的bean,支持第三方库中的组件。 #### 五、AOT 1. **AOT概述** AOT(Ahead-Of-Time)...

    Spring6_pdf版讲义.pdf

    - **根据名称自动装配**:使用`autowire="byName"`属性。 - **根据类型自动装配**:使用`autowire="byType"`属性。 ### 五、Bean的作用域 - **singleton**:单例模式,每个容器只有一个bean实例。 - **prototype**...

    spring chm文档

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...

    Spring中文帮助文档

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    Spring API

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    Spring的经典面试题

    - **开启方式**:在配置类上使用`@Configuration`和`@ComponentScan`注解来开启基于注解的自动装配。 ### Spring Bean的注入示例 #### 11. 注入Java集合类 ```java @Configuration public class AppConfig { @...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ...

    Spring攻略(第二版 中文高清版).part2

    第11章 Grails 441 11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 解决方案 442 11.1.3 工作原理 442 11.2 创建Grails应用 443 11.2.1 问题 443 11.2.2 解决方案 443 11.2.3 工作原理 443 ...

    Spring攻略(第二版 中文高清版).part1

    第11章 Grails 441 11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 解决方案 442 11.1.3 工作原理 442 11.2 创建Grails应用 443 11.2.1 问题 443 11.2.2 解决方案 443 11.2.3 工作原理 443 ...

    Spring 2.0 开发参考手册

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...

    C#微软培训资料

    第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 ...

Global site tag (gtag.js) - Google Analytics