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

posted @ 2017-09-11 22:53  羊不吃草  阅读(240)  评论(0编辑  收藏  举报