• Spring与IoC


    控制反转(IOC,Inversion of Control),是一个概念,是一种思想。

    指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器

    但是,需要注意,IoC也是有局限性的,其不能使用在分布式系统中。即其所依赖的反转到的外部容器,必须要与控制权出让方同处于一个JVM中。
    IoC是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式有两种:依赖注入和依赖查找。依赖注入方式应用更为广泛。
    . 依赖查找:Dependency Lookup,DL,容器提供回调接口和上下文环境给组件,程序代码则需要提供具体的查找方式。比较典型的是依赖于JNDI系统的查找。
    . 依赖注入:Dependency Injection,DI,程序代码不做定位查询,这些工作由容器自行完成。
    依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
    Spring的依赖注入对调用者与被调用者几乎没有任何要求,完全支持POJO之间依赖关系的管理。
    依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。

    一、SpringDI的引入

    1、SpringDI的底层实现原理

    Spring DI = 工厂 + 反射 + 配置文件
    传统开发中的面向抽象编程,调用者与接口实现类是紧密耦合在一起的。若实现类发生改变,则必须修改原有代码:在调用者类中将实现类进行更换。但,这不符合软件开发的OCP原则(OCP,Open-Close Principle)。
    OCP原则,即开闭原则,指软件实体(类、模块、功能等)应该可以被扩展,但不可被修改。即对功能扩展是开放的,对已有代码修改是关闭的。也就是说,应该在不修改现有代码的基础上,扩展新功能。
    若要使调用者类与接口实现类之间实现解耦,可使用工厂模式。但,这又使调用者与工厂耦合,工厂与接口实现类耦合。实现类的更换,不需要修改调用者类,但需要修改工厂,即代码仍需重新编译。
    此时,可以通过在工厂类中使用“反射 + 配置文件”的方式来加载接口实现类。而这就是Spring的IoC的工作原理。

    2、普通三层架构编程

    举例:common

    Step1:创建一个Java Project
    Step2:创建Service层接口IStudentService
    Step3:创建接口实现类StudentServiceImpl
    Step4:创建Dao层接口IStudentDao
    Step5:创建接口实现类StudentDaoImpl
    Step6:编写测试类MyTest

    3、工厂模式编程

    举例:factory
    Step1:复制common项目,更名为factory
    Step2:创建工厂类ServiceFactory 与DaoFactory
    Step3:修改MyTest中Service的获取方式

    Step4:修改StdentServiceImpl中Dao的获取方式

    4、工厂模式+反射编程

    举例:reflect

    Step1:复制factory项目,更名为reflect

    Step2:修改Service工厂类:使用反射创建Service实现类对象

    Step3:修改Dao工厂类:使用反射创建Dao实现类对象

  • 相关阅读:
    能者摹形 大师窃意
    Nginx负载均衡的详细配置及使用案例详解.
    Zookeeper 4、Zookeeper开发
    nginx负载均衡
    Git:husky > npm run s precommit
    关于数据库路径 DataDirectory
    关于在VS2010 ASP.NET MVC3中使用WebService的实例
    SQLite的SQL语法
    获取IE可见高度和内容高度 记录
    转文:ASP.NET运行机制原理
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9013860.html
Copyright © 2020-2023  润新知