spring原理总结

        spring是目前使用最广泛,大家都知道的一个框架。从2003年开始到目前(2016年)已存在了13年,目前最新版本是4。

        对我来说spring是使用最久的一个技术,有空的时候拿出来复习一下,温故而知新,也是很值得的。

        spring创始人是Rod Johnson。于2003年兴起。简单说,Spring是一个分层的Java SE/EEFull-stack (一站式)轻量级开源框架。

        spring是分层架构的,分层架构允许使用者选择使用哪一个组件。同时为为J2EE应用程序的开发提供框架。

        spring使用基本的JavaBean完成以前只能由EJB完成的事情。

        spring的核心是控制反转(IoC)和面向切面变成(AOP),简单讲,spring是一个分层的JavaSE / EEfull-stack(一站式)的轻量级开源框架(重量级如EJB)。

IoC(inversion of control)控制反转

        让对象的创建不再使用new,对象的生命周期,和对象之间的关系的控制权由原来的业务对象手中转交给了容器。

DI(Dependency Injection)依赖注入

        Ioc的一个重要特性是在系统运行时,动态的向某个对象提供它所需要的其它对象,这一点是通过DI实现的。

比如:A需要操作数据库,需要一个Connection对象。以前需要在A中编程获得一个Connection。有了Spring,只要告诉Spring A需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行中,Spring会在适当的时候创建一个Connection对象,然后像打针一样,注射给A。Spring可以通过JDK的反射实现DI。

AOP(Aspect-Oriented Programing)面向切面编程

使业务逻辑各个部分进行分离,耦合度降低,提高程序可重用性,提高开发效率。

AOP是Gof设计模式的延伸,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,提高代码的灵活性和可扩展性。Aop也是这种目标的一种实现。

AOP的代理的实现方式:JDK动态代理,CGLib字节码生成。

面向对象编程是将需求功能封装成相对独立且有自己行为的类中,依靠继承和多态建立彼此之间的关系。

面向切面就是,将不同对象中相同的功能抽取出来,封装在通用的类中,使原来的对象共享相同的行为。当功能发生改变时,只需要修改共享的行为。

Spring使用到的设计模式

1 静态工厂

BeanFactory就是一个静态工厂,根据传入的参数,动态创建一个类实例。

2 工厂方法

Spring管理的是一个工厂类,通过这个工厂类的方法创建类实例。

<bean id="random"
    class="example.RandomFactory"
    factory-method="createRandom"
    scope="prototype">

3 单例模式

使用singleton参数创建bean。spring默认的对象是singleton

4 适配器(Adapter)

spring的aop中,通过动态代理创建代理类,代理类定义了新的适配方法的接口。

5 代理(Proxy)

动态代理

6 观察者(Observer)

常用的是监听器的实现,比如ApplicationListener。

7 模板方法(Template Method)

JdbcTemplate

猜你喜欢

转载自ahopedog.iteye.com/blog/2308856