`

对依赖注入的一些理解

阅读更多

假设有两个 JavaBean,A和B,若A中调用了B,通常情况下是通过new创建一个B对象,但使用spring之后,可以将B作为A的一个属性,设置set方法,同时在spring配置文件中对B进行实例化。

这样做将B的实例化从具体的对象转移到了容器中。

以来注入的好处可以这样讲,若因为需求变更,A不需要使用B了,改用C了,若不使用依赖注入,则需要修改A程序并需要重新编译,而若使用依赖注入,在A编码时,将B抽象成一个接口,并将该接口作为A的一个属性进行使用,在具体的A程序实例化时,通过配置文件指定需要具体使用的bean即可。下面转载的文章更形象的说明了这种好处。http://tech.ddvip.com/2008-11/122794102996162.html

配置文件是struts核心的一部分,许多人都不喜欢使用配置文件,我也是其中一个。记得刚开始接触struts的时候,对它的配置文件实在是很烦,但慢慢地,了解了配置文件的作用之后,就喜欢上使用配置文件了。配置文件在项目中的作用是毋庸置疑的,在大型的项目中尤其重要。需求是不断地改变的,但我们的程序可不能老跟着需求变,即使老板吃得消,员工也吃不消啊。改变一个页面的业务逻辑,只需要在配置文件中修改一下action的配置就可以了,其它的代码都不需要改变。说到配置文件,它还有一个很重要的作用,那就是“控制反转”或者“依赖注入”,其实我也搞不清这两个词语之间是什么关系。不过,也没必要在这些文字间咬文嚼字,就用IOC来代替它们好了。在开发过程中,经验会遇到一个类里面包含另一个类的实例,如:

class A
{
  ………..
}
class B
{
  A a = new A();
}

  那么,在上面的代码中,B将依赖于A,也就是说,没有A,B就无法正常的执行。这样,B和A就产生了耦合。说得再明白一点,如果B的业务逻辑需要改变了,不想使用A,而是使用C,那么,就需要修改B的代码,还要重新编译,这对于大型的系统来说,需要起来代价是很大的。为了达到高内聚低耦合的需要,我们应该让B依赖于抽象而不是具体。比较常用的方法是使用工厂模式,如:

interface IA
{
  ……
}
class A
{
  ………..
}
class B
{
  IA a = Factory.CreateA();
}

  那么需要改变时,只需要发动工厂就行了,这大概就是平时所说的控制反转吧,由以前的修改B类转为修改工厂类。但是还是需要修改代码,当需要扩展新的类时也要修改工厂类,这明显是换汤不换药嘛,依赖注入也就应运而生了。

  对于依赖注入,我的感觉是就像是打针,需要什么就往里面注射什么。那么针在哪里?当然是在配置文件里了。要实现依赖注入,得修改一下B类,添加Setter方法。

class B
{
  IA a = null;
  IA A
  {
    set { a = value; }
  }
}

  此时,B类中A属性就可以通过配置文件来注入了,想要A就注入A,想要C就注入C,多方便啊。注入,你可以这样理解:类是一个封装体,就把它想象成一个空心的球体吧,Setter方法相当于这个球体的一个小孔,注入也就是把它需要的东西通过这个小孔往里面塞。

  说了这么多,其实都是在为我下一篇的文章作准备。下一篇文章将发布nstruts2.0,它比先前发布的nstruts1.0有了很大的改进,增加了许多新的元素,并且还支持依赖注入,注入的数据可以是对象,常量,还有集合。这些功能已经能完全满足项目开发中大部分的需求了。同时,nstruts2.0将会是个很好的学习实例,它设计的思路比较清晰和简单,对象框架设计感兴趣的朋友都会有或多或少的帮助。在发布之前,大家可以先看下我先前发布的nstruts1.0,了解一下大概。

分享到:
评论

相关推荐

    依赖注入那些事儿

    - **重量级IoC Container**:功能强大,支持多种依赖注入策略和高级特性,但可能对性能有较大影响。 - **轻量级IoC Container**:功能相对简单,对性能的影响较小,适用于对性能敏感的应用程序。 ##### 4.2.1 重量...

    一个轻量级的PHP依赖注入框架

    首先,让我们理解依赖注入的基本概念。在面向对象编程中,一个类可能依赖于其他类来完成某些任务。传统的做法是直接在类内部创建或引用这些依赖的实例,这被称为硬编码。而依赖注入则是通过外部将依赖对象传递给需要...

    c# 依赖注入 控制反转

    ### C# 依赖注入 控制反转 #### 一、IoC(控制反转)简介 IoC,即"Inversion of Control"(控制反转),是软件工程领域的一个重要概念,特别是面向对象编程中的一个关键设计原则。从字面上理解,IoC指的是程序运行...

    C++ 依赖注入

    为了深入理解依赖注入在C++中的应用,文章还提供了实现依赖注入容器的附录和参考文献,便于读者进一步学习和实践。通过这些内容的学习,可以掌握依赖注入的基本概念、方法和技巧,从而在实际开发中有效地利用依赖...

    spring依赖注入底层详解

    首先,我们要理解什么是依赖注入(Dependency Injection,简称DI)。依赖注入是一种设计模式,它允许我们把一个对象的依赖关系传递给另一个对象,而不是让对象自己去查找或创建依赖。在Spring中,依赖注入可以通过...

    模仿Spring依赖注入

    【Spring依赖注入详解】 在Java开发中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)功能而闻名。依赖注入是一种设计模式...理解并熟练掌握依赖注入,能够帮助开发者构建更健壮、更灵活的Java应用。

    PHP依赖注入容器库

    首先,让我们理解什么是依赖注入。依赖注入的核心思想是,一个对象不直接创建或查找它所依赖的对象,而是由外部实体将这些依赖传递给它。这样做的好处在于,对象之间的耦合度降低,因为它们不再直接控制彼此的生命...

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

    本文将深入探讨Spring中的依赖注入实现方式,以及如何通过样例文件`sample-autoconfig`进行理解和实践。 一、XML配置的依赖注入 在Spring早期版本中,XML配置是最常见的DI方式。开发者在Spring的配置文件(如`...

    Spring Ioc 注解 依赖注入

    ### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一...以上就是关于Spring IoC容器以及注解依赖注入的相关知识点介绍,希望能够帮助大家更好地理解和掌握这一重要的技术。

    php依赖注入demo

    依赖注入(Dependency Injection,简称DI)是软件设计...通过理解并应用依赖注入,我们可以编写出更加灵活和易于维护的PHP应用程序。在实践中,结合使用各种注入方式,并利用IoC容器等工具,可以更高效地实现这一模式。

    Angular6依赖注入Demo

    Angular6是Google推出的前端开发框架,它在设计时就考虑到了组件化和模块化的开发模式。...通过深入学习这个Demo,开发者将更好地理解Angular6的依赖注入系统和懒加载机制,从而在实际项目中更有效地应用这些概念。

    第三章 Spring4 依赖注入

    【标题】"第三章 Spring4 依赖注入"深入解析 在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种核心的设计模式,它允许我们...理解并熟练运用依赖注入,能更好地发挥Spring框架的优势,提升软件质量。

    反射与依赖注入DEMO

    在编程领域,反射和依赖注入是两种非常重要的概念,它们都是高级编程技术,可以极大地提升代码的灵活性和可维护性。下面将详细讲解这两个概念及其在实际应用中的DEMO示例。 **反射** 反射是Java(以及其他一些面向...

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

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

    spring依赖注入的理解.docx

    依赖注入(Dependency Injection,简称DI)是Spring框架的核心特性,也是实现控制反转(Inversion of Control,简称IoC)的一种方式。它旨在提高代码的可重用性、可...理解和熟练应用依赖注入是掌握Spring框架的关键。

    Spring 控制反转 依赖注入

    **依赖注入的理解** 依赖注入的基本思想是,一个类不应该负责查找或创建它所依赖的对象,而是应该由外部容器提供。在Spring中,有三种主要的依赖注入方式: 1. **构造器注入**:通过构造函数参数注入依赖。当对象...

    用Roboguice实现依赖注入

    首先,让我们理解什么是依赖注入。依赖注入的核心思想是解耦组件之间的依赖关系,使得组件之间通过接口进行通信,而不是通过硬编码的方式来创建和管理彼此的实例。这使得代码更易于测试,因为我们可以轻松地替换依赖...

    Spring 核心机制(依赖注入)

    本文将详细介绍依赖注入的概念、作用以及其实现方式,并通过具体的代码示例来加深理解。 #### 二、依赖注入概述 依赖注入是一种设计模式,它允许在运行时将对象的依赖关系动态地传递给对象,而不是在代码中硬编码...

    利用xml解析完成依赖注入 源码

    在Java开发中,依赖注入...通过分析`xmlparse_Ioc`源码,我们可以了解到XML解析和依赖注入的具体实现细节,加深对Spring框架的理解。同时,这也有助于我们在实际项目中更灵活地运用依赖注入,提升代码质量。

    Spring的依赖注入,与前置通知的实例

    首先,我们来深入理解Spring的依赖注入。在Spring中,依赖注入主要通过以下几种方式实现: 1. **构造器注入**:通过在类的构造函数中传递依赖对象的实例,Spring容器会在创建目标对象时调用合适的构造函数并注入...

Global site tag (gtag.js) - Google Analytics