`
tianke66
  • 浏览: 188079 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

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

阅读更多

设值注入

1. 对于习惯了传统JavaBean开发的程序员而言,通过setter方法设定依赖关系显得更加直观,更加自然。
2. 如果依赖关系(或继承关系)较为复杂,那么构造子注入模式的构造函数也会相当庞大(我们需要在构造函数中设定所有依赖关系),此时设值注入模式往往更为简洁。
3. 对于某些第三方类库而言,可能要求我们的组件必须提供一个默认的构造函数(如Struts中的Action),此时T构造子注入类型的依赖注入机制就体现出其局限性,难以完成我们期望的功能。

 

构造子注入

1. “在构造期即创建一个完整、合法的对象”,对于这条Java设计原则,构造子注入无疑是最好的响应者。
2. 避免了繁琐的setter方法的编写,所有依赖关系均在构造函数中设定,依赖关系集中呈现,更加易读。
3. 由于没有setter方法,依赖关系在构造时由容器一次性设定,因此组件在被创建之后即处于相对“不变”的稳定状态,无需担心上层代码在调用过程中执行setter方法对组件依赖关系产生破坏,特别是对于Singleton模式的组件而言,这可能对整个系统产生重大的影响。
4. 同样,由于关联关系仅在构造函数中表达,只有组件创建者需要关心组件内部的依赖关系。对调用者而言,组件中的依赖关系处于黑盒之中。对上层屏蔽不必要的信息,也为系统的层次清晰性提供了保证。
5. 通过构造子注入,意味着我们可以在构造函数中决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要,比如某个依赖关系注入的先决条件是组件的DataSource及相关资源已经被设定。

 
分享到:
评论

相关推荐

    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