• 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注解进行使用,如下: 

    Java代码  收藏代码
    1. @Autowired() @Qualifier("baseDao")     
    2. private BaseDao baseDao;    

     3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

    Java代码  收藏代码
    1. @Resource(name="baseDao")     
    2. private BaseDao baseDao;    

     
    我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。


  • 相关阅读:
    c++实现的一个链栈
    VS2005_XP DDK_DS3.2安装说明
    驱动开发遇到的一些问题
    fatal error LNK1000解决方法
    C++文件依存关系---提高编译速度
    架构的一些心得
    CPU与GPU的一点理解
    看"C++动态链接库编程深入浅出"的一些笔录
    VC2008下提示找不到MSVCP90D.dll的解决办法
    DLL搜索顺序
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114739.html
Copyright © 2020-2023  润新知