`

六 用@Resource注解完成属性装配

 
阅读更多
六 用@Resource注解完成属性装配


java代码注入配置,需要spring解压文件夹下lib/j2ee/common-annotation.jar这个库文件,添加玩以后,修改beans.xml


<?xml version="1.0" encoding="UTF-8"?>
<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>

引入注解命名空间和标签  xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
打开注解
<context:annotation-config/>




由于现在家里上spring的网站总是上不去,如果要出现标签提示,那么和前面一样在本地添加spring-context-2.5.xsd

现在配置工作完成了,现在开始用java代码来完成注入

@Autowired方式:默认按类型装配,默认情况下它要求以来对象必须存在,如果允许null值,可以设置它required属性为false。
如果我们想使用按名称装配,可以结合@Qualifier注解一起使用

@Autowired @Qualifier("personDaoBean")

private PersonDao personDao;

@Resource方式:默认按名称装配,名称可以通过@Resource的name属性指定,如果没有指定的name属性,当注解标注在字段上,
即默认取字段的名称作为bean名称寻找以来对象,当注解标注在属性的setter方法上,即迷人取属性名作为bean名称寻找以来对象。

@Resource(name="personDaoBean")

private PersonDao personDao;

推荐使用@Resource方式,因为@Resource是j2ee里的一个注解,而@AutoWired是spring里的注解,使用@Resource可以降低与框架
的耦合度。



完整配置
<?xml version="1.0" encoding="UTF-8"?>
<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/>
          <bean id="persondao" class="cn.itcast.service.impl.PersonDaoBean"></bean>
          <bean id="personservicebean" class="cn.itcast.service.impl.PersonServiceBean"></bean>
</beans>


实体类
package cn.itcast.service.impl;

import javax.annotation.Resource;

import cn.itcast.service.PersonDao;
import cn.itcast.service.PersonService;

public class PersonServiceBean implements PersonService {
      private PersonDao persondao;
    private String name;
    
    public PersonServiceBean(){}
	public void save(){
		System.out.println("我是save()方法");
		this.persondao.add();
		//System.out.println("name----------->"+name);
		
	}
	public PersonDao getPersondao() {
		return persondao;
	}
	@Resource
	public void setPersondao(PersonDao persondao) {
		this.persondao = persondao;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public PersonServiceBean(PersonDao persondao, String name) {
		this.persondao = persondao;
		//this.name = name;
	}

}


这里的注解是用在set方法上,可以用在属性声明部分 @Resource private PersonDao persondao;
实现效果一样 通过测试
注意:1 使用注解的实体类中,如果存在一个有参的构造方法,那么必须重写一个无参的构造方法
如果再实体类中,没有构造方法,其构造方法是缺省的无参的构造方法,但是有了有参的构造方法,
spring在实例化的时候,会找不到无参的构造方法,因为有参的构造方法把缺省的构造方法给覆盖了
所以这时要显性的写上无参的构造方法 否则在spring初始化的时候会报错
2 这两个注解的区别:在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:
@Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。


end!完毕!

 

分享到:
评论

相关推荐

    用@Resource注解完成属性装配

    用@Resource注解完成属性装配

    通过@Resource注解实现属性装配代码详解

    主要介绍了通过@Resource注解实现属性装配代码详解,具有一定借鉴价值,需要的朋友可以参考下

    spring2.5学习PPT 传智博客

    11_用@Resource注解完成属性装配 12_编码剖析@Resource注解的实现原理 13.@Autowire注解与自动装配 14.让Spring自动扫描和管理Bean 15.使用JDK中的Proxy技术实现AOP功能 16.使用CGLIB实现AOP功能与AOP概念解释...

    springMVC-annotation注解介绍

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写在字段和setter方法上。两者...

    jar包_javax.annotation.zip

    文件中包含javax.annotation的jar包,用来解决@Resource注解无法导入依赖。Resource注解无法导入依赖使用javax.annotation的注解类,这是他的jar包。

    Spring面试专题.pdf

    9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的作用域之间有什么区别? 12、什么是 Spring inner beans? 13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例...

    Spring面试题.zip

    9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的作用域之间有什么区别? 12、什么是 Spring inner beans? 13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例...

    spring基础

    如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。...

    spring.doc

    Mvc用注解写: 34 Spring容器IOC和di的整个启动过程: 38 3.8 spring中的继承 38 拓展spring为类中的属性赋值: 40 小结: 47 面向接口编程: 47 4 面向切面编程 52 4.1 代理模式 52 代理模式拓展: 52 4.1.1 JDK...

    spring-boot-resource:spring boot

    spring读取所有依赖中META-INF / spring.factories文件,该文件说明了哪些依赖可以被自动加载,然后根据ImportSelector类选择加载该依赖,使用ConditionOnXXX系列注解排除掉不需要的配置文件,最后将剩余的配置文件...

    Spring的学习笔记

    六、 注解对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二...

    spring2.5 学习笔记

    六、 注解对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二...

    25个经典的Spring面试问答

    使用Spring框架能带来哪些好处 什么是控制反转IOC什么是依赖注入 请解释下Spring框架中的IoC BeanFactory和ApplicationContext有什么区别 Spring有几种配置方式 如何用基于XML配置的方式配置Spring 如何用基于Java...

    高级开发spring面试题和答案.pdf

    面试高级开发的期间整理的面试题目,记录我面试遇到过的spring题目以及答案 目录 ...抽象类和接口的区别,什么时候用抽象类什么时候用接口; StringBuilder和StringBuffer的区别 java值传递和引用传递

    乐优商城.xmind

    它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 select select * from category c where c.pid = #{pid} CollectionUtils.isnotblank 判断集合是否为空 测试 可以利用url直接查询数据库...

    Spring中文帮助文档

    使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和JSTL 14.2.1. 视图解析器 14.2.2. 'Plain-old' JSPs versus ...

    Spring API

    使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多资源 14. 集成视图技术 14.1. 简介 14.2. JSP和JSTL 14.2.1. 视图解析器 14.2.2. 'Plain-old' JSPs versus ...

    Spring 3 Reference中文

    4.9.3 使用限定符来微调基于注解的自动装配 89 4.9.4 CustomAutowireConfigurer. 94 4.9.5 @Resource.. 95 4.9.6 @PostConstruct和@PreDestroy . 96 4.10 类路径扫描和管理的组件.. 96 ...

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

    1.12 用@Autowired和@Resource自动装配Bean 41 1.12.1 问题 41 1.12.2 解决方案 41 1.12.3 工作原理 41 1.13 继承Bean配置 47 1.13.1 问题 47 1.13.2 解决方案 47 1.13.3 工作原理 48 1.14 从...

Global site tag (gtag.js) - Google Analytics