`

spring依赖注入三种方式

阅读更多
在Spring容器中为一个bean配置依赖注入有三种方式:
1、使用属性的setter方法注入,最常用的方式;
2、使用构造器注入;
3、使用Field注入(用于注解方式)

1)、使用属性setter方法注入
   首先要配置被注入的bean,在该bean对应的类中,应该要有注入的对象属性或者基本数据属性。例如:为JobServiceImpl类注入JobMapper,同时为JobServiceImpl注入基本数据类型String,那么这时,就要为JobMapper对象和String类型设置setter方法,用于进行依赖注入。
如何配置该bean呢?
     <bean id="jobService" class="com.zrj.service.impl.JobServiceImpl">
         <property name="jobMapper">
            <ref>jobMapper</ref>
         </property>
     </bean>
以上就是一个使用属性的setter方法进行依赖注入。
2)、使用构造器注入
   一、在PersonBiz类中注入PersonDao和String类型的数据;在该类中,不用为PersonDao属性和String数据类型的属性设置setter()方法,但是需要生成该类的构造方法。
   二、在配置文件中配置该类的bean,并配置构造器,在配置构造器中用到了<constructor-arg>节点,该节点有四个属性:
  idnex是索引,指定注入的属性,从0开始,如:0代表personDao,1代表str属性;
  type是指该属性所对应的类型,如PersonDao对应的是com.zrj.dao.PersonDao;
  ref是指引用的是依赖对象;
  value当注入的不是依赖对象。
如下:
--被依赖的类在配置文件中声明
<bean id="personDao" class="com.aptech.dao.impl.PersonDAOImpl"></bean>
--依赖其他类的类在配置文件的声明
<bean id="personBiz" class="com.aptech.biz.impl.PersonBizImpl">

<constructorarg index="0" type="com.aptech.dao.PersonDAO"ref="personDao"/>

<constructor-arg index="1" value="Spring学习"/>

</bean>
3)、使用字段(Filed)注入(采用注解方式)
   在Spring中,注入依赖对象可以采用手工装配和自动装配,在实际应用开发中建议使用手工装配,因为自动装配会产生许多很多未知的情况,开发人员无法预见最终的装配结果。
  手工装配依赖对象有分为两种方式:
   a、一种是在xml文件中,通过在bean节点下配置;如上面讲到的使用属性的setter方法依赖注入对象和使用构造器方法注入依赖对象都是这种方式。
   b、另一种就是java代码中使用的注解的方式进行装配,在代码中加入@Resource或者@Autowired。
怎么样使用注解的方式来为某个bean注入依赖对象?
   一、在applicationContext.xml配置文件中,加入必要的头文件:
  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
此为引入了注解的命名空间,否则报错。以上配置隐式的注册了多个对注解进行解析的
处理AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor等。
  二、在配置文件中加入<context:annotation-config>节点,告诉Spring容器可以采用注解的方式注入对象,
    <context:annotation-config></context:annotation-config>
  三、在配置文件中配置bean对象
  四、在需要依赖注入的相应的依赖类,声明一个依赖对象,不用生成该依赖对象的setter方法,并且为该对象添加注解。
  在java代码中可以使用@Autowired或者@Resource注解方式进行Spring的依赖注入。
  两者的区别:@Autowired默认按类型装配,@Resource默认按名称装配,当找不到名称匹配的bean时,才会按类型装配。
  通常我们采用@Resource.
  使用注解注入依赖对象不用再在代码上写依赖对象的setter方法或者该类的构造方法,并且不用再在配置文件中配置大量的依赖对象,使代码更加简洁、清晰、易于维护。

依赖注入----自动装配
Spring中提供了自动装配依赖对象机制,但是实际开发中并不推荐使用自动装配。
自动装配的配置文件如下:
<bean id="***" class="***" autowire="byType">
  只需要配置一个autowire属性即可完成自动装配,不用再配置文件中写<property>,但是在类中还是会生成依赖对象的setter方法。
  Autowire属性值如下:
1、byType按类型装配
2、byName按名称装配
3、construnctor与byType方式相似,不同之处在于与它的应用于构造参数,如果容器中没有找到与构造参数类型一直的bean,那么将抛出异常。
4、autodetect通过bean类的自省机制来决定是使用construnctor还是byType的方式进行自动装配。如果发现默认的构造器,那么将使用byType的方式。
分享到:
评论

相关推荐

    spring依赖注入三种方式 测试源码

    通过阅读和理解这些源码,你可以更深入地了解Spring依赖注入的工作原理及其在项目中的具体使用。 在进行依赖注入时,Spring使用BeanFactory或ApplicationContext作为容器,负责创建、管理和装配Bean。容器读取配置...

    spring学习:依赖注入的几种方式讨论

    Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...

    Spring 三种依赖注入方式.doc

    Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...

    spring依赖注入底层详解

    在Spring中,依赖注入可以通过构造器注入、设值注入和接口注入三种方式实现。 1. 构造器注入:通过在类的构造函数中传递依赖对象来完成注入。这种方式在创建对象时就确保了所有依赖都已就绪,适合于对象的依赖关系...

    Spring依赖注入的方式

    总结,Spring的依赖注入提供了构造器注入、设值注入和接口注入三种方式,帮助开发者实现松耦合和高内聚的设计。根据项目需求和场景,选择合适的方式能有效提升代码质量。同时,结合源码阅读和使用工具,如IDEA的代码...

    Spring三种注入方式(三)

    除了以上三种方式,Spring还提供了基于注解的元数据注入,如`@Resource`、`@Qualifier`等,以及XML配置文件中的`&lt;bean&gt;`标签等方式进行依赖注入。在实际开发中,可以根据需求选择合适的方式,通常推荐使用构造器注入...

    spring依赖注入

    Spring依赖注入是Spring框架的核心特性之一,它使得对象之间的依赖关系得以解耦,增强了代码的可测试性和可维护性。依赖注入(Dependency Injection,简称DI)的理念是,一个对象不应该负责寻找并创建它所依赖的对象...

    spring依赖注入的实现原理

    二、Spring依赖注入的实现方式 1. **setter方法注入**:Spring通过调用对象的setter方法来设置其依赖的实例。在bean配置文件中,使用`&lt;property&gt;`标签指定依赖属性。 2. **构造器注入**:Spring可以通过调用带有多...

    spring依赖注入的几种方式

    Spring 依赖注入的几种方式 依赖注入(Dependency Injection,...Spring 依赖注入可以通过 Set 注入、构造器注入和注解注入三种方式来实现,它可以将对象之间的耦合关系降到最低,从而提高系统的灵活性和可维护性。

    java中spring依赖注入的简单例子

    javaEE 开发中 现在最成熟的框架之一应该就是spring了 spring框架最强大的地方就是实现了依赖注入 也叫控制反转 最近的一个项目中用的就是 spring框架 spring框架是工厂模式的应用结合了MVC的设计思想 大家可以...

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

    本篇学习笔记将深入剖析Spring依赖注入的原理,通过源码分析帮助我们理解这一核心机制。 首先,依赖注入允许我们解耦组件之间的关系,使得各个组件可以独立地进行开发、测试和维护。在Spring中,DI主要通过两种方式...

    模仿Spring依赖注入

    【Spring依赖注入详解】 在Java开发中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)功能而闻名。依赖注入是一种设计模式,它允许我们解耦组件,使我们的应用程序更加灵活,易于测试和维护。本篇...

    Spring依赖注入检查.

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

    如何实现Spring依赖注入 AOP.rar

    在Spring框架中,DI主要通过构造器注入、setter方法注入和接口注入三种方式实现。 1. **构造器注入**:通过在类的构造器中传入依赖对象来实现。Spring会根据构造器参数类型找到合适的bean并注入。 ```java public ...

    Spring Ioc 注解 依赖注入

    Spring IoC容器主要通过两种方式实现依赖注入: 1. **构造器注入**:通过类的构造方法来注入依赖项。 2. **设值注入**:通过setter方法来注入依赖项。 #### 四、使用注解进行依赖注入 随着Spring框架的发展,除了...

    spring依赖注入例子

    通过这种方式,Spring的依赖注入帮助我们实现了低耦合,使得`UserService`只关注业务逻辑,而不关心数据访问的具体实现。这提高了代码的可读性、可测试性和可维护性。 在提供的`springDemo`压缩包中,可能包含了...

    Spring系列之依赖注入的三种方式.docx

    依赖注入的三种主要方式是:setter 方法注入、构造器注入以及字段注入。在本文中,我们将详细讨论前两种注入方式。 1. **使用属性的 setter 方法注入** 这是最常见也是最灵活的注入方式。setter 方法注入通过调用...

    Spring定义bean的三种方式和自动注入

    这种方式需要Bean有对应的setter方法,以便Spring进行依赖注入。 ```xml 张三"/&gt; 李四"/&gt; ``` 2. **基于注解的Bean定义**: 自Spring 2.5引入注解支持后,我们可以使用注解来简化配置。在`Student`...

    spring依赖注入bean

    Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于提高代码的可测试性、可维护性和灵活...

Global site tag (gtag.js) - Google Analytics