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完成声明事务管理
- 基于tx和aop命名空间的xml配置文件
- 基于@Transactional注解