• Spring框架(依赖注入)


    特点

      1轻量级和侵入性低

      2依赖注入和面向接口实现松耦合

      3面向切面编程 减少样式代码

    专有名词:

      1依赖注入:对象无需自行管理依赖关系。通过系统负责协调在创建对象的第三方组件的设定,实现依赖关系自动注入对象 

      2装配:应用组件之间的协作

      3应用切面:将遍布各处的功能分离出来 形成可重用的组件

      4耦合度:两者之间关系的紧密程度,即依赖关系的紧密程度

    例子:

      耦合度紧密:

      

    public class DamselRescuingKnight implements Knight {
    
      private RescueDamselQuest quest;
    
      public DamselRescuingKnight() {
        this.quest = new RescueDamselQuest();
      }
    
      public void embarkOnQuest() {
        quest.embark();
      }
    
    }

      分析:

    DamselRescuingKnight 类和 RescueDamselQuest类之间紧密耦合 

    松耦合:
    public class BraveKnight implements Knight {
    
      private Quest quest;
    
      public BraveKnight(Quest quest) {
        this.quest = quest;
      }
    
      public void embarkOnQuest() {
        quest.embark();
      }
    
    }
    DamselRescuingKnight 类 松耦合 没有与特定的Quest实现产生耦合 可以根据不同的需求进行实现的替换 
    通过.xml文件进行依赖注入的配置
    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd">
    
      <bean id="knight" class="sia.knights.BraveKnight">
        <constructor-arg ref="quest" />
      </bean>
    
      <bean id="quest" class="sia.knights.SlayDragonQuest">
        <constructor-arg value="#{T(System).out}" />
      </bean>
    
    </beans>

    分析:id为knight的 bean标签的注入方式是构造器注入,依赖是id为quest的bean标签 但是依赖具体的实现设置是根据class属性决定可以根据具体情况修改 实现了类的松耦合

  • 相关阅读:
    QGIS 编译
    Ubuntu: 无法使用su命令
    win7 与 Ubuntu 16.04 文件传送
    OSGEarth编译
    GADL配置编译
    C++ 类对象和 指针的区别
    C++ Primer Plus 第六版笔记
    Windows下使用doxygen阅读和分析C/C++代码
    _MSC_VER详细介绍
    LUA学习之一 初次接触
  • 原文地址:https://www.cnblogs.com/YangJM/p/7507768.html
Copyright © 2020-2023  润新知