`
tonyan416
  • 浏览: 30074 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

设值注入和构造注入的比较

阅读更多
Spring的多种注入依赖方式:

1.设值注入 2.构造器注入 3属性注入 4方法注入

但是我们常用的 或者是说我常用的 就是 设值注入 和构造器注入
构造器注入
<bean id="tonyanRepository" class="org.springframework.batch.core.repository.support.SimpleJobRepository">
<constructor-arg ref="tonyanInstanceDao"></constructor-arg>
<constructor-arg ref="tonyanExecutionDao"></constructor-arg>
<constructor-arg ref="tonaynExecutionDao"></constructor-arg>
</bean>

设值注入
<bean id="jobIncrementer" class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer">
<property name="dataSource" ref="tonyanDataSource" />
<property name="incrementerName" value="TONYAN_TONYAN_JOB_SEQ" />
<property name="columnName" value="ID"></property>
</bean>


那么 他们之间有什么不同和差异呢?
引用

    相比之下,设值注入具有如下的优点:
  • 与传统的JavaBean的写法更相似,程序开发人员更容易理解、接受。通过setter方法设定依赖关系显得更加直观、自然。
  • 对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿,难以阅读。Spring在创建Bean实例时,需要同时实例化其依赖的全部实例,因而导致性能下降。而使用设值注入,则能避免这些问题。
  • 尤其是在某些属性可选的情况下,多参数的构造器更加笨重。
  • -----------------------------------------------------------
    构造注入也不是绝对不如设值注入,在某些特定的场景下,构造注入比设值注入更优秀:
  • 构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入。例如,组件中其他依赖关系的注入,常常需要依赖于Datasource的注入。采用构造注入,可以在代码中清晰地决定注入顺序。
  • 对于依赖关系无须变化的Bean,构造注入更有用处。因为没有setter方法,所有的依赖关系全部在构造器内设定。因此,无须担心后续的代码对依赖关系产生破坏。
  • 依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系。对组件的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则。
综上所述,一般采用以设值注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的的注入,尽量采用构造注入;而其他的依赖关系的注入,则考虑采用设值注入
分享到:
评论

相关推荐

    JavaEE搭建Spring环境,完成设置注入和构造注入

    本教程将指导你如何搭建Spring环境,并实现设置注入和构造注入。 首先,让我们理解什么是Spring框架。Spring是一个开源的Java平台,主要用于构建企业级应用。它提供了全面的编程和配置模型,极大地简化了JavaEE应用...

    spring的setter注入和构造注入(XML讲解以及常见错误)

    本篇将详细讲解setter注入和构造注入这两种常见的DI方式,并结合XML配置进行解析,同时讨论可能遇到的常见错误。 setter注入是Spring中最常用的注入方式之一。通过在类中定义setter方法,Spring容器可以在创建对象...

    spring setter 和构造 注入 例子 spring 4.2.0

    总结来说,Spring的setter和构造注入是实现依赖注入的关键技术,它们提供了灵活且强大的方式来管理对象间的依赖关系,从而提高代码的可维护性和测试性。在实际项目中,开发者可以根据需求和场景选择合适的注入方式。

    C#MVC实现带参数的构造注入

    在实际项目中,我们经常需要在初始化控制器时传递依赖,这就是构造注入发挥作用的地方。构造注入是一种依赖注入(Dependency Injection, DI)模式,它允许我们在创建对象时传入依赖,而不是让对象自行查找或创建它们...

    Spring设值注入和构造注入(通过xml).zip

    在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度...通过深入理解和熟练运用设值注入和构造注入,开发者可以更好地设计和构建松散耦合、易于扩展的应用程序。

    Spring依赖注入使用构造设注入demo

    总结来说,Spring的构造器注入使我们能够明确地声明类的依赖,并让Spring容器负责管理和注入这些依赖,从而实现了低耦合和高内聚的设计。通过"SpringIOCTest2"这个示例,我们可以更好地理解和应用这一核心概念。

    spring介绍(set和构造器注入)

    标题中的“spring介绍(set和构造器注入)”是指在Spring框架中两种主要的依赖注入(Dependency Injection,简称DI)方式:setter注入和构造器注入。在Spring框架中,DI是一种核心特性,它允许我们解耦组件之间的关系...

    g构造sql注入点 g构造sql注入点

    #### 更复杂的SQL注入构造 除了最基本的构造外,攻击者还可以利用更复杂的技术来构造SQL注入点。例如,通过使用`UNION`操作符,攻击者可以将多个查询合并成一条SQL语句,从而获取更多的信息。例如: - 提交的`id`...

    Java开发学习(六)----DI依赖注入之setter及构造器注入解析.doc

    本文将详细介绍 Java 中的依赖注入(Dependency Injection,简称 DI),特别是 setter 注入和构造器注入两种方式的使用和实现。 一、DI 依赖注入 依赖注入是指在容器中建立 Bean 与 Bean 之间的依赖关系的过程。...

    .net 自定义 IOC注入(含属性注入、构造函数注入、方法注入等)

    .net 自定义 IOC注入(含属性注入、构造函数注入、方法注入等)

    Spring 依赖注入 构造方法注入

    NULL 博文链接:https://zhangyulong.iteye.com/blog/856986

    基于SpringBoot构造器注入循环依赖及解决方式

    在代码示例中,我们有两个类`CircularDependencyA`和`CircularDependencyB`,它们通过构造器互相注入对方作为依赖。当尝试启动Spring Boot应用时,由于这个构造器注入的循环依赖,会触发异常。 4. 解决循环依赖的...

    详解Spring 两种注入的方式(Set和构造)实例

    通过以上实例,我们可以看到Spring如何通过构造注入和Set注入来管理对象的依赖。选择哪种注入方式取决于具体需求,构造注入适合对依赖有严格要求的情况,而Set注入则更加灵活,适用于依赖可选或需要后期修改的情况。...

    Spring框架构造注入type属性实例详解

    * 提高可读性:构造注入可以使代码更加易读和理解,从而提高系统的可读性和可维护性。 结论 在本文中,我们详细介绍了Spring框架构造注入type属性实例的详解,包括构造注入的原理、构造函数的类型、type属性的作用...

    spring的注入方式

    Spring提供了多种注入方式,包括set注入、构造注入和自动注入,让我们逐一深入探讨。 1. **Set注入** Set注入是最常见的注入方式,它通过setter方法来设置对象的依赖。首先,你需要在类中声明需要注入的属性,并...

    Spring.Net演示实例(IOC、AOP、属性注入、构造函数注入、通知过滤器)

    今天有空,写了基于C#使用Spring.Net的演示实例,希望能给有需要的人带来帮助,其中演示了配置下的IOC、AOP、属性注入、构造函数注入、通知过滤器、以及不使用配置直接代码硬编的AOP动态代码过程,另外还增加了...

    注入器(万能注入器)

    6. **属性注入**:通过设置对象的属性来注入依赖,这种方式在某些场景下可能更方便。 7. **方法注入**:在方法调用时注入依赖,常用于事件驱动或回调机制。 8. **生命周期管理**:注入器还需要负责对象的生命周期...

    global文件设置sql防注入

    在Web应用程序中,SQL注入通常发生在用户输入的数据未经适当验证或过滤就被直接用于构造数据库查询的情况下。为了保护系统免受SQL注入攻击,我们可以采取一系列措施,包括在`Global.asax`文件中进行配置。下面我们将...

    面试官常问的spring依赖注入和bean的装配问题.pdf

    显式装配是指在Spring配置文件中明确指定如何注入依赖,包括setter注入和构造器注入,这种方式虽然配置繁琐,但清晰明了,易于管理和维护。在Spring Boot中,尽管自动化配置十分便捷,但仍然可以通过@Primary、@...

    注入技术及实现 sql注入 dll注入

    SQL注入是一种常见的网络安全威胁,主要针对使用SQL...总结,SQL注入和DLL注入是两种不同的攻击手段,但它们都利用了程序对用户输入处理的漏洞。通过理解这些攻击原理,采取相应的防护措施,可以显著提高系统的安全性。

Global site tag (gtag.js) - Google Analytics