1.概念

       spring是一个轻量级Java开源开发框架。目的是为了管理对象的创建及其依赖关系。解决了业务逻辑层和其他层的松耦合关系。

2.spring七大模块

     core,context,aop,dao,,orm,web,mvc    

     Core:实现IOC(Factory模式,Java的反射编程),BeanFactory是核心类,负责对JavaBean的配置和管理。

     对象在xml文件中给出定义

    Context:继承BeanFactory   JNDI  EJB

   ORM:(object relationship Mapping)整合hibernate

    Web模块 servlet监听器的上下文,对现存的JSF,Tapestry struct集成

    MVC模块

3.Bean是Spring的核心

    BeanFactory在调用getBean()方法之前不会实例化任何对象

   Bean是类的代理人(反射和代理来实现的),加入了Bean的注解之后可以由ioc容器进行管理。

  三大核心接口:、beanFactory,ApplicationContext,webApplicationContext

  重要接口:Resource 重要接口资源装载,实现与具体资源的解耦

  IOC(控制反转):依赖注入,依赖查找。

  如何实现依赖注入:接口注入(不现实),setter注入(xml,Spring),构造器注入(Spring),工厂方法注入(控制反转和单例设计思想的主要实现方法)

  方法注入:单例模式创建新实例

   Bean在可以通过<ref>相互引用,建立依赖,父子类关系       

  <import>整合多个配置文件

   Bean的作用域:singleton,prototype, (webApplicationContext)request,session,globalSession

    懒加载:lazy-init      

   Bean的配置方式:基于xlm(bean的实现类来自于第三发:DataSource,JdbcTemplate,还有命名空间,AOP,context)

   基于注解:当前开发类;

   基于Java类的配置:开发的Bean逻辑比较复杂

    PropertyEditor是属性编辑器的接口  

   使用外部属性文件properties      

   4.事务管理和spring的事物管理      

4.1事务

 事务是一个事件的完整操作,一个环节出错,全部回滚。

 事务的四大特性

  1.原子性(Atomicity)事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。

   2.一致性(Consistency)事务在完成时,必须是所有的数据都保持一致状态。

   3.隔离性(Isolation)并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性。

   4.持久性(Durability)一旦事务完成,数据库的改变必须是持久化的。

   企业级应用开发过程,多用户同时访问数据库,这就是事务的并发。

   1.脏读:一个事务读到另一个事务未提交的更新数据。

   2.不可重复读:一个事务两次读同一行数据,可是这两次读到的数据不一样。
   3.幻读:一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行。
   4.丢失更新:撤消一个事务时,把其它事务已提交的更新的数据覆盖了。

   JDBC定义了五种事务隔离级别

    TRANSACTION_NONE JDBC 驱动不支持事务
    TRANSACTION_READ_UNCOMMITTED 允许脏读、不可重复读和幻读。
    TRANSACTION_READ_COMMITTED 禁止脏读,但允许不可重复读和幻读。
    TRANSACTION_REPEATABLE_READ 禁止脏读和不可重复读,单运行幻读。
   TRANSACTION_SERIALIZABLE 禁止脏读、不可重复读和幻读。

 4.2 Spring 事务管理 

   事务属性:传播行为,隔离级别,只读,超时

   事务管理的两种方式:编程式事务管理,声明式事务管理

   编程式事务管理:实现PlatformTransactionManager接口或者TransactionTemplate的实现,推荐使用后者,因为符合Spring的模板模式

   声明式事务管理:通过AOP实现事务管理,常用TransactionProxyFactoryBean完成声明事务管理

  1. 基于tx和aop命名空间的xml配置文件
  2. 基于@Transactional注解

    

    

 

10-07 14:48