`

用Spring的Resource注解完成属性依赖注入

阅读更多

          bean的注入方式有3种:

 

 

          第一种:使用构造器注入
          第二钟:使用属性setter方法注入
          第三种:使用Field注入(用于注解方式)

 

         下面使用注解的方式完成bean的注入

  1. java代码注入配置,需要spring解压文件夹下lib/j2ee/common-annotation.jar这个库文件,添加玩以后,修改beans.xml   
  2.   
  3.   
  4. <?xml version="1.0" encoding="UTF-8"?>   
  5. <beans xmlns="http://www.springframework.org/schema/beans"  
  6.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  7.        xmlns:context="http://www.springframework.org/schema/context"  
  8.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  9.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  10.            http://www.springframework.org/schema/context   
  11.            http://www.springframework.org/schema/context/spring-context-2.5.xsd">   
  12.           <context:annotation-config/>   
  13.           
  14. </beans>   
  15.   
  16. 引入注解命名空间和标签  xmlns:context="http://www.springframework.org/schema/context"  
  17. http://www.springframework.org/schema/context   
  18. http://www.springframework.org/schema/context/spring-context-2.5.xsd   
  19. 打开注解   
  20. <context:annotation-config/>   
  21.   
  22.   
  23.   
  24.   
  25. 如果要出现标签提示,那么和前面一样在本地添加spring-context-2.5.xsd   
  26.   
  27. 现在配置工作完成了,现在开始用java代码来完成注入   
  28.   
  29. @Autowired方式:默认按类型装配,默认情况下它要求以来对象必须存在,如果允许null值,可以设置它required属性为false。   
  30. 如果我们想使用按名称装配,可以结合@Qualifier注解一起使用   
  31.   
  32. @Autowired @Qualifier("personDaoBean")   
  33.   
  34. private PersonDao personDao;   
  35.   
  36. @Resource方式:默认按名称装配,名称可以通过@Resource的name属性指定,如果没有指定的name属性,当注解标注在字段上,   
  37. 即默认取字段的名称作为bean名称寻找以来对象,当注解标注在属性的setter方法上,即迷人取属性名作为bean名称寻找以来对象。   
  38.   
  39. @Resource(name="personDaoBean")   
  40.   
  41. private PersonDao personDao;   
  42.   
  43. 推荐使用@Resource方式,因为@Resource是j2ee里的一个注解,而@AutoWired是spring里的注解,使用@Resource可以降低与框架   
  44. 的耦合度。   
  45.   
  46.   
  47.   
  48. 完整配置   
  49. <?xml version="1.0" encoding="UTF-8"?>   
  50. <beans xmlns="http://www.springframework.org/schema/beans"  
  51.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  52.        xmlns:context="http://www.springframework.org/schema/context"  
  53.        xsi:schemaLocation="http://www.springframework.org/schema/beans   
  54.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  55.            http://www.springframework.org/schema/context   
  56.            http://www.springframework.org/schema/context/spring-context-2.5.xsd">   
  57.           <context:annotation-config/>   
  58.           <bean id="persondao" class="cn.itcast.service.impl.PersonDaoBean"></bean>   
  59.           <bean id="personservicebean" class="cn.itcast.service.impl.PersonServiceBean"></bean>   
  60. </beans>   
  61.   
  62.   
  63. 实体类   
  64. package cn.itcast.service.impl;   
  65.   
  66. import javax.annotation.Resource;   
  67.   
  68. import cn.itcast.service.PersonDao;   
  69. import cn.itcast.service.PersonService;   
  70.   
  71. public class PersonServiceBean implements PersonService {   
  72.            private PersonDao persondao;   
  73.            private String name;   
  74.        
  75.            public PersonServiceBean(){}   
  76.            public void save(){   
  77.                       System.out.println("我是save()方法");   
  78.                       this.persondao.add();   
  79.                       //System.out.println("name----------->"+name);   
  80.            
  81.             }   
  82.             public  PersonDao getPersondao() {   
  83.                         return persondao;   
  84.             }   
  85.             @Resource  
  86.             public void setPersondao(PersonDao persondao) {   
  87.                        this.persondao = persondao;   
  88.             }   
  89.             public String getName() {   
  90.                        return name;   
  91.             }   
  92.             public void setName(String name) {   
  93.                        this.name = name;   
  94.             }   
  95.             public PersonServiceBean(PersonDao persondao, String name) {   
  96.                       this.persondao = persondao;   
  97.                      //this.name = name;   
  98.             }   
  99.   
  100.   }   
  101.   
  102.   
  103.  这里的注解是用在set方法上,可以用在属性声明部分 @Resource private PersonDao persondao;   
  104. 实现效果一样 通过测试   
  105. 注意:1 使用注解的实体类中,如果存在一个有参的构造方法,那么必须重写一个无参的构造方法   
  106. 如果再实体类中,没有构造方法,其构造方法是缺省的无参的构造方法,但是有了有参的构造方法,   
  107. spring在实例化的时候,会找不到无参的构造方法,因为有参的构造方法把缺省的构造方法给覆盖了   
  108. 所以这时要显性的写上无参的构造方法 否则在spring初始化的时候会报错   
  109. 2 这两个注解的区别:在java代码中使用@Autowired@Resource注解方式进行装配,这两个注解的区别是:   
  110. @Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。   
  111.   
  112.   
  113. end!完毕!  

 

分享到:
评论

相关推荐

    Spring注解注入属性

    使用Spring注解进行依赖注入,如`@Autowired`和`@Resource`,不仅简化了代码结构,减少了XML配置文件的冗余,还增强了代码的可读性和灵活性。通过合理利用这些注解及其辅助注解如`@Qualifier`,开发者可以更高效地...

    用@Resource注解完成属性装配

    在Spring框架中,`@Resource`注解是一个重要的组件,用于实现依赖注入(Dependency Injection,简称DI)。依赖注入是Spring的核心特性,它使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。本篇文章将...

    Spring Ioc 注解 依赖注入

    ### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一个开源项目,最初是为了解决企业级应用开发中的复杂性问题而诞生的。Spring框架的核心特性包括IoC(Inversion of ...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    4. `@Inject` 注解:来自JSR 330规范,Spring也支持此注解进行依赖注入,与`@Autowired`类似,但不支持属性级别的注入。 三、使用注解注入的步骤 1. 创建Bean:首先,你需要在Spring配置文件中声明你的bean,或者...

    Spring应用注解完成属性装配

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

    day38 17-Spring的Bean的属性注入:注解方式

    在Spring框架中,Bean的属性注入是核心功能之一,它允许开发者在不编写代码的情况下配置对象的依赖关系。本文将详细讲解使用注解方式进行Bean属性注入的方法,以及相关的源码和工具应用。 首先,让我们了解Spring中...

    详解Spring基于Annotation的依赖注入实现

    在深入探讨Spring框架中基于注解(Annotation)的依赖注入(Dependency Injection,简称DI)实现之前,我们首先需要理解几个核心概念:Spring框架、依赖注入、以及注解本身。 ### Spring框架简介 Spring框架是一个...

    spring使用注解依赖jar

    在本主题中,我们将深入探讨"spring使用注解依赖jar"这一关键知识点,包括Spring框架如何通过注解来实现依赖注入,以及如何管理相关的jar包。 首先,Spring框架的核心特性之一就是依赖注入(Dependency Injection,...

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

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

    (转)Spring 3.0 注解注入详解

    3. **@Required**:此注解用在字段或setter方法上,表示该字段或方法必须通过依赖注入来设置,否则容器启动时会抛出异常。这通常用于强制确保某些关键依赖被正确地注入。 4. **@Value**:这个注解可以用于注入基本...

    spring注解注入示例详解.pdf

    使用@PostConstruct注解的方法,会在Spring容器实例化Bean并完成依赖注入之后,自动被调用。 例如: ```java @PostConstruct public void init() { // 初始化代码 } ``` 在使用@PostConstruct时,一个典型的应用...

    spring3注解详细

    Spring 3 的注解大大简化了依赖注入的过程,使得代码更加简洁。理解并正确使用 @Autowired、@Qualifier、@Resource 和 @PostConstruct,能够帮助开发者更高效地管理 Bean 的生命周期和依赖关系。在实际项目中,应...

    spring使用resource注解的demo

    在这个"spring使用resource注解的demo"中,我们将深入探讨如何使用`@Resource`以及它与`@Autowired`的区别。 首先,`@Resource`注解的主要目的是为了自动装配bean,它的基本语法是在字段或方法上使用,如: ```...

    第三章 Spring4 依赖注入

    Spring4的依赖注入是其核心功能之一,通过构造器、setter方法或属性注解实现。它提高了代码的可读性、可测试性和可维护性。在实际开发中,结合注解和XML配置,可以灵活应对各种复杂的依赖关系。理解并熟练运用依赖...

    Spring依赖注入检查.

    Spring依赖注入是Spring框架的核心特性之一,它极大地简化了Java应用程序的开发,使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性。本文将深入探讨Spring依赖注入的概念、工作原理以及如何在实际...

    spring依赖注入的实现原理

    本篇文章将深入探讨Spring依赖注入的实现原理,以及如何通过源码理解和使用这一特性。 一、依赖注入简介 依赖注入的基本思想是,对象不应该负责创建或查找它所依赖的对象,而应该由外部容器(如Spring框架)来负责...

    Spring学习笔记(6)----编码剖析Spring依赖注入的原理

    当使用`@Autowired`注入带有AOP代理的bean时,Spring会自动处理这些代理,确保依赖注入的正确性。 总结一下,Spring依赖注入的原理主要包括以下几点: 1. 通过构造器或setter方法实现组件间的依赖关系。 2. 使用`@...

    Spring java注解,元注解和自定义注解

    Spring框架充分利用了Java注解的功能,简化了配置过程,并提供了许多内置的注解来支持依赖注入、事务管理等功能。以下是一些常用的Spring注解: 1. **@Component** - 用于标记一个类作为Spring管理的Bean。 - ...

    springmvc @Resource 注解方式问题

    在Spring MVC框架中,`@Resource`注解是用来管理依赖注入(Dependency Injection,简称DI)的一种方式。这个注解主要用于标注字段或者方法,以便Spring容器能够自动为它们提供实例化对象。本文将深入探讨`@Resource`...

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

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

Global site tag (gtag.js) - Google Analytics