`

六 用@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注解完成属性装配

    如果注解没有指定`name`属性,Spring会使用字段名或方法名(对于setter方法,去掉`set`前缀)作为bean的名字。例如,对于`private MyService myService;`,Spring会查找名为`myService`的bean。 ### `@Resource`与`...

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

    "通过@Resource注解实现属性装配代码详解" 通过@Resource注解实现属性装配代码详解是 Spring 框架中的一种依赖注入方式。依赖注入是指在应用程序中,某个组件需要使用其他组件或对象时,通过容器来提供这些对象的...

    (转)Spring中@Autowired注解和@Resource注解的区别

    在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...

    编码剖析@Resource注解的实现原理

    3. **名称解析**:如果`@Resource`注解包含了`name`属性,Spring会直接使用这个名称查找bean。否则,它会使用字段或方法的名称。在找不到匹配的bean时,Spring会抛出异常。 4. **依赖注入**:一旦找到匹配的bean,...

    Spring应用注解完成属性装配

    本篇文章主要关注的是使用注解来完成属性装配的方法。 首先,我们来看`@Autowired`注解,这是Spring提供的核心注解之一,用于自动装配Bean。当在字段、构造器参数或方法上使用`@Autowired`时,Spring会尝试找到类型...

    spring框架的@Resource和@Component 程序和文档

    在Spring框架中,`@Resource`和`@Component`是两个重要的注解,它们用于不同的目的,但都与依赖注入(Dependency Injection,简称DI)息息相关。理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先...

    Spring注解@Resource和@Autowired.doc

    Spring 注解@Resource 和@Autowired Spring 框架中提供了两个重要...如果需要按照名称装配,可以使用@Resource,如果需要按照类型装配,可以使用@Autowired。同时,需要注意它们的装配顺序和使用策略,以免出现错误。

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    在Spring框架中,`@Autowired`和`@Resource`都是用于自动装配Bean的重要注解,它们简化了依赖注入的过程,使得代码更加简洁、易于维护。本文将深入探讨这两个注解的使用、区别以及如何在实际开发中应用它们。 首先...

    Spring框架中 @Autowired 和 @Resource 注解的区别

    也就是说,如果在字段或方法上使用`@Resource`,Spring会查找Bean的名字与注解中的`name`属性相匹配。如果`name`属性未指定,那么Spring会尝试使用字段名或方法名作为Bean的ID来查找并注入相应的Bean。如果找到多个...

    spring使用resource注解的demo

    总结起来,这个"spring使用resource注解的demo"旨在演示如何利用`@Resource`注解进行bean的自动装配,以及与`@Autowired`的区别。通过分析`test008`中的文件,我们可以学习如何在实际项目中应用这些概念,以实现更...

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许...通过合理的bean设计和适当的注解使用,我们可以充分利用Spring的强大功能,同时保持代码的简洁和高效。

    1.@Resource是按名称进行注入的,属于java自带的。@Autowired是按类型进行注入的,属于Spring。.pdf

    Spring框架是Java领域中实现DI的典型代表,提供了多种注解来支持这一机制,其中两个常用的注解是`@Resource`和`@Autowired`。虽然它们都可以用来实现依赖注入,但它们的用法和原理有所不同。 首先,`@Resource`注解...

    【Java面试】@Resource 和 @Autowired 的区别.doc

    @Resource 是 JDK 提供的注解,只是 Spring 在实现上提供了这个注解的功能支持。它的使用方式和 @Autowired 完全相同,最大差异于 @Resource 可以支持ByName 和 ByType 两种注入方式。如果使用 name,Spring 就根据 ...

    详解Spring注解--@Autowired、@Resource和@Service

    例如,在下面的代码中,我们使用@Resource将Tiger和Monkey自动装配到Zoo中: ```java public class Zoo { @Resource(name="tiger") private Tiger tiger; @Resource(name="monkey") private Monkey monkey; } ...

    spring3.x注解

    在 Spring 3.x 中,提供了两种用于属性装配的注解:@Autowired 和 @Resource。 1. @Autowired @Autowired 注解用于自动装配依赖项,默认按照类型匹配的方式(byType)进行注入。可以用于成员变量、setter 方法、...

    AOP中的注解自动装配通知

    同时,通过@Autowired和@Resource注解,可以方便地在类之间注入依赖,简化代码。 总之,AOP中的注解自动装配通知是Spring框架中的重要特性,它通过注解简化了Bean的装配过程,同时也使得AOP的切面更容易实现和理解...

    Spring注解注入属性

    这意味着在使用`@Resource`时,你可以选择通过`name`属性显式指定bean的名称,也可以省略此属性,让Spring自动按类型装配。相比于`@Autowired`,`@Resource`提供了更灵活的依赖查找策略。 #### 三、`@Qualifier`的...

    4Spring自动装配——annotation resource方式

    在Spring 2.5引入了注解支持后,开发者可以使用注解来声明Bean的属性、方法或构造函数中的依赖,而无需XML配置。`@Autowired`是Spring中最常见的注解,用于自动装配匹配类型的Bean。然而,`@Resource`注解则提供了另...

    Spring注解实现自动装配过程解析

    Spring 注解实现自动装配过程解析 ...通过本文的学习,读者可以更好地理解 Spring 框架中的自动装配机制,并学会使用 @Autowired、@Resource 和 @Required 等注解来实现自动装配,以提高编程效率和代码可读性。

    spring注解注入示例详解.pdf

    在使用@PostConstruct时,一个典型的应用场景是在父类中定义了一个属性,但是父类中并没有提供该属性的setter方法,子类需要通过自己的方法来设置该属性。这时,可以在子类的适当方法上使用@PostConstruct注解来完成...

Global site tag (gtag.js) - Google Analytics