Spring

Spring简介和Spring3.0的变化

  Spring框架由Rod Johnson开发,2003年发不了Spring框架的第一个版本。经过长达7年多的发展,Spring已经发展成Java EE开发中最重要的框架之一。不仅如此,一Spring为核心还衍生出了系列框架,如Spring Web Flow、Spring Security、Spring Android......等。

  Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高企业应用的开发效率。Spring提供了一种Template的设计哲学,这些Template完成了大量的通用步骤,如果开发者用这些Template,则无须自己实现那些通用的步骤。

  Spring为企业应用的开发提供了一个轻量级的解决方案。该解决方案包括:基于依赖注入的核心机制。基于Aop的声明式事务管理,与多种持久层的整合,以及优秀的Web MVC框架等。Spring致力于JavaEE 应用各层的解决方案,而不是仅仅专注于某一层的方案。可以说:Spring是企业应用开发“一站式”选择,Spring贯穿表现层、业务层、持久层。然而,Spring并不想取代那些已有的框架,而是以高度的开放性与他们无缝结合。

  Sspring的优点:

  1.低侵入式设计,代码污染率极低。

  2.独立于各种应用服务器,基于Spring框架的应用,可以真正的实现Write One、Run Anywhere的承诺。

  3.Spring的DI容器降低了业务对象替换的复杂性,提高了组件之间的解耦。

  4.Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式处理,从而提供更好的复用。

  5.Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。

  6.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

  Spring的核心机制:依赖注入

  加入A组件调用了B组件的方法,我们可称A组件依赖于B组件。

  使用依赖注入,不仅可以为Bean注入普通的属性值,还可以注入其他Bean的引用。通过这种依赖注入,Java EE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无需使用工厂模式。依赖注入达到的效果,非常类似于传说中的“共产主义”,当某个Java实例需要其他Java实例时,系统自动提供所需要的实例,无须程序显式获取

  一、理解依赖注入

   虽然Spring并不是依赖注入的 首创者,但Johnson是第一个高度重视以配置文件来管理Java实例的协作关系的人,他给这方式起了一个名字:控制反转(Inversion of  control)。但这个称呼及其晦涩,在后来的日子里,Martine Fowler 为这种方式起了另一个相对简单的称呼:依赖注入(Dependence Injection)。

   Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。

    设值注入:IoC容器使用属性的setter方法来注入被依赖的实例。

    构造注入:IoC容器使用构造器来注入被依赖的实例。

  part one 设值注入:

codes77.3settersrcorgcrazyitappservicePerson.java

public interface Person{
    //定义一个使用斧子的方法
    public void useAxe();        
}

codes77.3settersrcorgcrazyitappserviceAxe.java

public interface Axe{
   //Axe方法里有个砍的方法
   public String chop(); 
}
View Code

codes77.3settersrcorgcrazyitappserviceChinese.java

public class Chinese implements Person{
  private Axe axe;  
  public void setAxe(Axe axe){
    this.axe=axe;
   }  

  pubilic void useAxe(){
    System.out.println(axe.chop());
   } 
}

codes77.3settersrcorgcrazyitappserviceStoneAxe.java

public class StoneAxe implements Axe{
	public String chop(){
		reture"石斧砍柴好慢";
	}
}

  Spring使用XML作为配置文件,从Spring2.0开始,Spring既可以采用DTD来定义配置文件的语义约束,也可以采用XML Schema配置文件的语义约束。当采用XML Schema来定义配置文件的语义约束是,还可以利用Spring配置文件的扩展性,进一步简化Spring的配置。  

  

原文地址:https://www.cnblogs.com/miffy/p/4976635.html