最近刚学Spring,对此有一点想法,以下是总结: 1、由于EJB1和EJB2过于复杂了,所以给了Spring崛起的可乘之机,所以Spring是一个高度灵活的框架,Spring目的是为了解决企业级应用开发的复杂度。Rod Johnson提出来,用Spring framework中的AOP(声明性事务),去替换CMT,简化了70~80%中小型企业的开发问题。 2、 Spring 主要简化了逻辑层的代码,(事务的控制主要在逻辑层,)。 3、Spring的核心功能: IOC (控制反转)和 AOP(切面编程)。 (1)、Spring的IOC机制实现了对象之间的解耦(实现决定接口),避免了硬编码造成的程序耦合。(解决方式:反射+配置文件,即IOC机制帮助创建对象以及管理对象之间的关系,) (2)、AOP切面编程可以帮助我们实现很多特定的功能(例如拦截器),AOP有俩种配置方式:xml和注解方式 (3)、声明性事务控制处理,(在事务较多时使用声明性事务较为方便,事务较少时使用编程性事务) (4)、Spring对jdbc进行了轻量级的封装,可以更方便的操作数据库。 (5)、Spring也支持其他优秀框架。 4、Spring在连接数据库时体现的主要工作:将Connection打开放入ThreadLocal中,底层代码 需要使用dataSourse. 5、Spring容器:—单例 (1)、BeanFactory:只提供基本的DI(依赖注入)功能。 (2)、ApplicationContext,它有俩个实现类 - classPathXmlApplicationContext基于JavaSE - XmlWebApplicationContext,基于JavaEE
6、Spring中bean对象的生命周期(scope):
(1)singleton ----默认模式(当一个bean的作用域设置为singleton, Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例) (2)prototype — 每一次请求都会产生一个新的bean实例。容器在初始化、配置、装配完一个prototype实例后,将它交给客户端, (3)request 每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTPRequest内有效 (4) session 每次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTPSession内有效. (5) application:作用域是ServletContext (6) globalSession :作用域是ApplicationContext,不过它仅仅在基于portlet的web应用中才有意义.
7、Spring事务的传导机制(3种)
(1). (propagation=Propagation.REQUIRED) 内部事务,使用外部事务的配置策略 (2) requires_new 内部事务使用新的事务策略,与外部事务策略不同 (3) requires_nest 事务中出现异常后,回滚到savepoints,而不是事务的起点
