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属性决定可以根据具体情况修改 实现了类的松耦合

  • 相关阅读:
    APP性能测试工具GT的使用总结:app内存测试
    app专项测试:app静态测试(耗时、流量、内存、图片大小)
    沟通的重要性
    [改善Java代码]推荐覆写toString方法
    [改善Java代码]使用package-info类为包服务
    [改善Java代码]不要主动进行垃圾回收
    [改善Java代码]推荐使用String直接量赋值
    [改善Java代码]在接口中不要存在实现代码
    [改善Java代码]不要随便设置随机种子
    [改善Java代码]优先使用整型池
  • 原文地址:https://www.cnblogs.com/YangJM/p/7507768.html
Copyright © 2011-2022 走看看