注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
1 需要修改xml文件的以下信息。    加入下列红色部分的4行
<?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=” userDAO” class=” UserDAOImpl” />
<bean id=” userService” class=” UserServiceImpl” />
</beans>
注意:包
2 Java代码中
import javax.annotation.Resource;
public class UserServiceImpl implements UserService{
@Resource(name=” userDAO”) 
private UserDAO userDao ;
private String name;
public UserServiceImpl(){             //默认构造方法
}
注意:@Resource(name=” userDAO”)里的name属性可要可不要,如果没有指定name属性,根据私有变量userDao去找bean,如果也找不到,则通过类型UserDAO去找。如果指定了name属性,只能按名称装配。
除了用字段注入,还可以通过属性的set方法来注入:
@Resource
public setUserDao(UserDAO userDAO)
{   userDao= userDAO; }
也可以使用@Autowired,它于@Resource注解的区别是:
@Autowired默认是按类型进行装配。
@Resource默认按名称装配,当找不到时再用类型。
***************************************************************
3. 使用区别
@Resource(name="loginService") 
private LoginService loginService;
@Autowired(required=false)@Qualifier("loginService") 
private LoginService loginService;
(1).@Autowired 与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上;
(2).@Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设
置它的required属性为false,如:@Autowired(required=false) .
如果我们想使用名称装配可以结合 @Qualifier注解进行使用;
(3).@Resource(这个注解属于J2EE的),默认安装名称进行装配,名称可以通过name属性进行指定,如果没
有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属
性名进行装配。当找不到与名称匹配的bean时才按照类型进行装 配。但是需要注意的是,如果name属性一旦指
定,就只会按照名称进行装配。
推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring
的耦合,这样代码看起就比较优雅 。
另外,通过实践,还总结出一条规律:
如果将@requied或者@autowired写了set方法之上,则程序会走到set方法内部。
但如果写在了field之上,则不会进入set方法当中。

用@resource注解方式完成属性装配相关推荐

  1. 通过继承来实现注解方式的属性注入

    要使用注解来注入属性,首先就要定义一个注解,注解的定义如下: package everyworkdayprogramming._2015_1_23;import java.lang.annotatio ...

  2. (转)用@Resource注解完成属性装配

    http://blog.csdn.net/yerenyuan_pku/article/details/52858878 前面我们讲过spring的依赖注入有两种方式: 使用构造器注入. 使用属性set ...

  3. [Spring5]IOC容器_Bean管理注解方式_注入属性@Autowired_@Qualified_@Resource_@Value

    基于注解方式实现属性注入 (1)@AutoWired:根据属性类型进行自动装配 第一步 把service和dao对象创建,在service和dao类添加创建对象注解 第二步 在service注入dao ...

  4. IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)

    目录 IOC操作Bean管理注解方式(注入属性@Autowired.@Qualifier和@Resource) 1.基于注解方式实现 属性注入 (1)@Autowired:根据属性类型进行自动装配 第 ...

  5. Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理

        注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果. 手工装配依赖对象  手工装配依赖对象,在这种方式中又有两种编 ...

  6. Spring中@Autowired注解、@Resource注解的区别

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...

  7. 重新理解@Resource注解

    @Resource和@Autowired注解都是用来实现依赖注入的.只是@Autowired按byType自动注入,而@Resource默认按 byName自动注入. @Resource有两个重要的属 ...

  8. java 注解 静态变量_Spring中静态方法中使用@Resource注解的变量

    开发中,有些时候可能会工具类的静态方法,而这个静态方法中又使用到了@Resource注解后的变量.如果要直接使用 Utils.staticMethod(),项目会报异常:如果不直接使用,还要先 new ...

  9. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

最新文章

  1. Hadoop 分布式环境搭建
  2. Centos 搭建高性能WEB服务 Nginx+PHP+MYSQL+Discuz论坛
  3. python 定时加载网页
  4. 使用Apache Camel 2.14的轻松REST端点
  5. tensor判断是否相等_PyTorch的Tensor(中)
  6. 线性表的顺序表示和实现
  7. 终于修好了MacBook
  8. 高效排错系列--摘要
  9. 科学与技术计算机图片解释,【图片】计算机-科普—都是从网上找的【计算机科学与技术吧】_百度贴吧...
  10. mysql 岩机_mysql数据库基本应用
  11. python打包成exe去cmd_完美起航-python打包exe之打包深度学习模型踩坑记录及其解决办法。...
  12. qt传值给js及js传值给qt(qt及js的交互)
  13. Word文件的OpenXML解析(以Python3为例)
  14. php ma,第十四届萌芽杯优秀作品展示第一期
  15. LLVM项目的目录布局介绍
  16. Linux中etc目录详解大全总汇详解
  17. [pip安装]There was a problem confirming the ssl certificate
  18. RecyclerView多种布局封装优化(雷惊风)
  19. 微软技术大会-无人机为中国电信巡航基站
  20. Error converting data type...

热门文章

  1. linux apache中文名称图片,linux下解决apache不支持中文名的方法详解!
  2. 搞定使用MySQL导入外部的SQL文件执行
  3. Java案例:Swing版记事本
  4. 【BZOJ3681】Arietta,主席树优化网络流
  5. 2017.9.4 Nim 思考记录
  6. 【英语学习】【Level 08】U05 Better option L5 A picture is worth a thousand words
  7. 移动开发-语音识别-调用讯飞平台提供的API
  8. Mosquito的优化——订阅树优化(八)
  9. fx5u mc协议_SLMP协议和MC协议
  10. 正式宣布DXBC2GLSL,HLSL字节码到GLSL的编译器