Spring
2015-11-19 19:46
323 查看
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 设值注入:
codes\07\7.3\setter\src\org\crazyit\app\service\Person.java
codes\07\7.3\setter\src\org\crazyit\app\service\Axe.java
View Code
codes\07\7.3\setter\src\org\crazyit\app\service\Chinese.java
codes\07\7.3\setter\src\org\crazyit\app\service\StoneAxe.java
Spring使用XML作为配置文件,从Spring2.0开始,Spring既可以采用DTD来定义配置文件的语义约束,也可以采用XML Schema配置文件的语义约束。当采用XML Schema来定义配置文件的语义约束是,还可以利用Spring配置文件的扩展性,进一步简化Spring的配置。
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 设值注入:
codes\07\7.3\setter\src\org\crazyit\app\service\Person.java
public interface Person{ //定义一个使用斧子的方法 public void useAxe(); }
codes\07\7.3\setter\src\org\crazyit\app\service\Axe.java
public interface Axe{ //Axe方法里有个砍的方法 public String chop(); }
View Code
codes\07\7.3\setter\src\org\crazyit\app\service\Chinese.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()); } }
codes\07\7.3\setter\src\org\crazyit\app\service\StoneAxe.java
public class StoneAxe implements Axe{ public String chop(){ reture"石斧砍柴好慢"; } }
Spring使用XML作为配置文件,从Spring2.0开始,Spring既可以采用DTD来定义配置文件的语义约束,也可以采用XML Schema配置文件的语义约束。当采用XML Schema来定义配置文件的语义约束是,还可以利用Spring配置文件的扩展性,进一步简化Spring的配置。
相关文章推荐
- java循环链表实现约瑟夫环问题
- Java实战-山寨QQ
- Java异常处理(二)
- Java学习笔记--堆、栈、常量池
- 创建Java中的Pair类
- 人工鱼群算法java版
- Java中CountDownLatch、CyclicBarrier、Thread.join方法基本应用
- Jersey中Json与Java对象转换处理
- 解决:MyEclipse中SVN更新引起代码冲突导致部署失败
- java题目-1:输入20个学生的成绩,算出算出平均分和低于平均分的人数
- 几种 Java 序列化方案的性能比较
- Java 异常处理机制(一)
- highcharts+java
- 堆栈和队列的java实现
- java调用不在同一目录下的bat
- Spring并发访问的线程安全性问题
- javaweb学习总结(二十五)——jsp简单标签开发(一)
- java学习笔记03
- 简单项目开发之一(springmvc+log4j)
- spring里面怎么取容器里面的常量值