一、概念
Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。
主要由以下几个模块组成:
Spring Core:核心类库,提供IOC服务;
Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring AOP:AOP服务;
Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;
Spring ORM:对现有的ORM框架的支持;
Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;
Spring MVC:提供面向Web应用的Model-View-Controller实现。
二、优点
(1)spring属于低侵入式设计,代码的污染极低;
(2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;
(3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。
(4)spring对于主流的应用框架提供了集成支持。
三、Spring事务传播机制
REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED) | 支持当前事务,如果没有事务,创建一个新事务 |
REQUIRED_NEW(TransactionDefinition.PROPAGATION_REQUIRED_NEW) | 创建一个新事务,并挂起当前事务 |
SUPPORT(TransactionDefinition.PROPAGATION_SUPPORT) | 支持当前事务,如果没有事务则以非事务方式执行 |
NOT_SUPPORT(TransactionDefinition.PROPAGATION_NOT_SUPPORT) | 以非事务方式执行,如果当前存在事务,则把事务挂起 |
MANDATORY(TransactionDefinition.MANDATORY) | 必须以事务方式执行,如果没有事务,则抛出异常 |
NEVER(TransactionDefinition.NEVER) | 以非事务方式执行,如果存在事务,则抛出异常 |
NESTED(TransactionDefinition.NESTED) | 如果当前存在事务,则嵌套当前事务内执行,如果当前没有事务,则创建新事务 |