1. Spring简介
spring是一个为了解决企业应用开发的复杂性,而出现的一个轻量级的开源框架。
轻量级,不是说Spring的代码少,而是Spring是非侵入式的,也就是说引入Spring框架并不会对原来的应用产生影响。
优点:
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖的关系维护,交给Spring管理。
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis等)。
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。
Spring包含两大模块:
IOC:控制反转(依赖注入(DI))
AOP:面向切面编程
2. IOC容器和依赖注入(DI)
IOC容器出现,是为了降低耦合度的。
IOC使用的是工厂模式,通过工厂容器解析配置文件中的bean,并创建实例,等有需要注入时,将bean实例set到类中。
控制反转,是指是将创建对象的控制权从程序员手中转向Spring框架,获得依赖对象的过程被反转了。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。
所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
3. 面向切面(AOP)
AOP(Aspect OrientedProgramming)称为面向切面编程,是一种编程思想,是面向对象编程(OOP)的一种补充。
面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等。
可以在不修改源代码的前提下,去为系统中的业务组件添加某种通用功能。
Spring的AOP使用的是动态代理模式。
原文:https://www.cnblogs.com/sivanchan/p/13555174.html