Spring、使用注解方式装配对象(@Resource、@Autowired)
使用手工注解方式有两种方式@Resource、@Autowired
首先,引入注解所使用的Jar包 :common-annotations.jar
然后在beans.xml中加入命名空间空间
xmlns:context="http://www.springframework.org/schema/context"
然后打开使用注解的开关(在beans节点下的第一个节点处加入<context:annotation-config /> );
</pre></p><p><pre name="code" class="html"><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <bean id="personIDao" class="cn.dao.impl.PersonDaoImpl" />
<bean id="personIService" class="cn.server.impl.PersonServiceImpl">
</bean>
</beans>
@Resource
在程序中使用@Resource ,@Resource可以加在字段上,如:
@Resource private PersonIDao personIDao;
@Resource 也可以加在 字段的Set方法上,如:
</pre><pre name="code" class="java">private PersonIDao personIDao; @Resource
public void setPersonIDao(PersonIDao personIDao) {
this.personIDao = personIDao;
}
public PersonIDao getPersonIDao() {
return personIDao;
}
@Resource 首先会根据字段的名称到beans.xml中去寻找相匹配的配置,如果找不到再根据字段的类型到beans.xml中找类型相匹配的配置;
还可以为@Resources指定特定的名字如下:
@Resource(name="personIDao")
private PersonIDao personIDao;
还可以为@Resources指定类型,如下:
@Resource(type=PersonIDao.class)
private PersonIDao personIDao;
以上几种 方式都可以完成对字段或者字段的set方法进行注入;
@Autowired
默认情况下@Autowired是按类型进行注入:
<pre name="code" class="java"> @Autowired
private PersonIDao personIDao;
但 @Autowired同样也可以按名称注入:
<pre name="code" class="java"> @Autowired @Qualifier("personIDaoxx")
private PersonIDao personIDao;
下面说明一下为什么推荐使用 @Resorce进行注解:
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
- @Autowired() @Qualifier("baseDao")
- private BaseDao baseDao;
3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
- @Resource(name="baseDao")
- private BaseDao baseDao;
我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。
最新文章
- 利用set排序数组并且去掉重复的数组元素
- jqury 右击事件插件
- java和h5 canvas德州扑克开发中(一)
- Eclipse安装nodeclipse插件
- 分享一套精美的现代 UI PSD 工具包【免费下载】
- acm 20140825
- 基于.net mvc的校友录(五、web.config对的配置以及filter实现的权限控制)
- openerp经典收藏 深入理解工作流(Workflow)(转载)
- 快速建立Linux c/c++编译环境
- CSS clip:rect矩形剪裁功能及一些应用介绍
- C#查询当前微信自定义菜单结构
- hdoj 2085 核反应堆【水】
- 小米平板6.0系统如何无ROOT激活xposed框架的步骤
- 第54节:Java当中的IO流(中)
- DataGrid列中加入CheckBox 全选 点击Header全选 和 只操作选中部分 功能的实现
- 华为交换机MSTP+VRRP配置实例说明文档
- 泡泡一分钟:A Multi-Position Joint Particle Filtering Method for Vehicle Localization in Urban Area
- cuda中用cublas库做矩阵乘法
- 委托、事件、匿名方法、Lambda
- java后端面试题汇总
热门文章
- python socket编程学习笔记2
- Jquery基础之ajax
- USB 传输协议
- 14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
- Opencv2.4.4作图像旋转和缩放
- Matrix, Her, Transcendence
- Kolmogorov复杂性
- 安装android studio时,解决unable to access android sdk add-on list
- CentOS 6.8yum源的配置
- 通过Jetty搭建一个简单的Servlet运行环境