Spring 是一个开源框架,主要优势是其分层架构,分层架构允许选择使用哪一个组件。
七大模块组成包含Spring Core,AOP,ORM,DAO,Web,Context,Web MVC。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 对象的方式。组件都可以单独存在,或者与其他一个或多个模块联合实现。
Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC(控制反转)功能,Spring的所有功能都是借助IOC实现的。
AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。 AOP是OOP的延续
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等
Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持
Spring 提供对JDBC的支持,对JDBC进行封装,
WEB模块提供对常见框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架
Context模块提供框架式的Bean访问方式,其他程序可以通过Context访问Spring的Bean资源,相当于资源注入。
WEB MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。
spring 的优点:
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
spring有两个核心模块:
什么是DI / IOC
IOC控制反转主要强调的是程序之间的关系是由容器(spring)控制的,容器控制对象,控制了对外部资源的获取。而反转即为,在传统的编程中都是由我们创建对象获取依赖对象,而在IOC中是容器帮我们创建对象并注入依赖对象,正是容器帮我们查找和注入对象,对象是被获取,所以叫反转。
可以理解为当一个对象a调用另一个对象b的时候,传统的写法是在对象a中把对象b实例化,但是在spring中,a和b对象都是spring初始化并管理的,通过set方法注入或者构造方法注入给b对象的引用。
简单理解:功能对象不是自己实例化,通过注入实现(优点:解决硬编码问题)
什么是AOP
主要是管理系统层的业务,比如日志,权限,事物等。AOP是将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为切面(aspect),切面将那些与业务逻辑无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
aop的advice有哪些
1)before:在执行切入的方法之前,执行代码
2)after returning:在执行切入的方法正常执行(没有异常)之后,执行代码
3)after throwing:在执行切入的方法发生异常的时候,执行代码
4)after:在执行切入的方法无论是否发生异常,都必须最后执行代码
aop框架具有的两个特征:
1.各个步骤之间的良好隔离性
2.源代码无关性
spring常用的注入方式主要有三种:构造方法注入,set注入,基于注解的注入(详解:http://lib.csdn.net/article/javaee/3298)。