zoukankan      html  css  js  c++  java
  • 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属性决定可以根据具体情况修改 实现了类的松耦合

  • 相关阅读:
    互联网人25岁毕业 拿一万块钱月薪 (转)
    在windows平台编译openAL Android 库
    lua简单包装
    libevent 简单学习
    cocos2dx中使用tolua++使lua调用c++函数
    《OpenGL超级宝典》编程环境配置
    快速排序、归并排序、堆排序三种算法性能比较
    二叉树的三种遍历的递归与非递归算法
    boost之bind
    boost之内存管理
  • 原文地址:https://www.cnblogs.com/YangJM/p/7507768.html
Copyright © 2011-2022 走看看