Spring
2016-06-22 09:09:31 0 举报
AI智能生成
Spring是一个开源的Java平台,它提供了一种简单的方法来开发企业级应用程序。Spring框架通过控制反转(IoC)和面向切面编程(AOP)等技术,使开发人员能够更轻松地创建和管理复杂的应用程序。Spring的核心功能包括依赖注入(DI),这使得对象之间的依赖关系可以自动管理,从而提高了代码的可重用性和可维护性。此外,Spring还提供了许多其他功能,如事务管理、安全、数据访问和Web开发等。总之,Spring是一个强大而灵活的框架,它可以帮助开发人员更快地构建高质量的应用程序。
作者其他创作
大纲/内容
IOC(控制反转)
内容
控制:控制权
反转:交给第三方
DI(依赖注入)
类对接口依赖关系由第三方注入
注入方式(原本)
构造函数注入
属性注入(setter方法)
接口注入(不提倡)
Spring 提供注入(第三方容器)
反射
编程方式调用 Class 各项功能
类装载器 ClassLoader
寻找类字节码文件并构造出类在JVM内部表示的对象组件
装载步骤
装载:查找导入Class文件
链接
校验:Class数据正确性
准备:类静态变量分配空间
解析:符号引用(占位符)转化为直接引用
初始化:静态变量静态代码块初始化
Java 反射机制
Class 反射对象描述类语义结构
三个反射类
Constructor:类构造函数反射类
newInstance
Method:类方法反射类
Invoke
Field:类成员变量反射类
set
反射体系保证可以通过程序化方式访问类中所有元素
资源访问利器
Resource(资源抽象接口)
多种资源加载器(getResource)
BeanFactory 和 ApplicationContext
BeanFactory(面向Spring)
类通用工厂,创建管理各种对象(POJO或称为Bean)
主要方法 getBean()
Application(面向开发者)
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
WebApplicationContext
新增 bean 的作用域
request
session
global session
Bean 的生命周期
实现接口
InitializingBean, disposableBean
XML 配置
init-method="init" destroy-method="destory"
全局
default-init-method="init" default-destroy-method="destory"
AOP
Spring 事务
基础知识
事务特性
原子性
一致性
隔离性
持久性
并发问题
数据读问题
脏读
不可重复读
幻读
数据丢失更新问题
第一类:撤销的A事务覆盖了B事务
第二类:A事务覆盖B事务已提交的数据
锁
按锁对象不同
表锁定
整个表
行锁定
特定行
从并发事务锁定关系看
共享锁
允许其它共享锁锁定防止独占锁
独占锁
防止独占锁和共享锁
ThreadLocal
线程局部变量
Map<线程对象,线程变量副本>
接口方法
set
get
remove
initialValue
事务隔离级别
未提交读 RU
脏读、不可重复读、幻读、第二类丢失更新
提交读 RC
不可重复读、幻读、第二类丢失更新
可重复读 RR
幻像读
串行读
Spring 对事务的支持
TransactionTemplate And TransactionCallback
事务管理抽象
TransactionDefinition
定义事务行为
隔离级别
ISOLATION_DEFAULT
ISOLATION_READ_UNCOMMITTED
ISOLATION_READ_COMMITTED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE
超时时间
超时后回滚
是否为只读事务
事务传播规则
PlatformTransactionManager
根据 TransactionDefinition 创建事务
方法
commit
rollback
getTransaction
事务管理器实现类
DataSourceTransactionManager(JDBC、iBatis)
EntityTransaction(JPA)
HibernateTransactionManager(Hibernate)
JtaTransactionManager(JTA)
TransactionStatus
描述创建事务的状态
继承 SavepointManager 接口
createSavepoint
rollbackToSavepoint
releaseSavepoint
事务同步管理器
DataSourceUtils(Spring JDBC 和 iBatis)
使用 ThreadLocal 实现线程安全(资源独占)
事务传播行为
多个事务方法互相调用时,事务如何在这些方法间传播
类型
PROPAGATION_REQUIRED:当前有事务就加入没有就新建
PROPAGATION_SUPPORTS:当前有事务就加入没有就非事务运行
PROPAGATION_MANDATORY:使用当前事务没有则抛异常
PROPAGATION_REQUIRES_NEW:新建事务,如果当前有事务则挂起当前
PROPAGATION_NOT_SUPPORTED:非事务运行,如果当前有事务则挂起当前
PROPAGATION_NEVER:非事务运行,如果当前有事务则抛异常
PROPAGATION_NESTED
编程式事务
TransactionTemplate(线程安全)
主要方法
setTransactionManager(设置事务管理器)
execute(TransactionCallback action):在Callback中实现要执行事务的逻辑
声明式事务(XML配置)
优点
对代码侵入性小,让事务管理代码从业务中消失
配置
切点信息
控制事务行为的事务属性
隔离级别
传播行为
超时时间
回滚规则
Spring 3.0 简化
aop/tx Schema 命名空间
@Transactional 注解技术
种类
基于 TransactionProxyFactoryBean 的方式
需要为每个事务配置一个Proxy
基于 AspectJ 的XML方式
配置好不需要更改
基于注解
配置简单,在每个类加上注解
Spring MVC
核心:业务数据的抽取和业务数据的展示相分离
组件
Controller(控制器)
RequestMapping:映射资源 URI
处理完毕返回 ModelAndView 给 DispatcherServlet
DispatcherServlet(调度器)
请求分发->分发给不同的控制器
web.xml 中配置拦截下的请求和 Controller 的映射
接收 Controller 的 ModelAndView 渲染 View
HandlerIntercepter(拦截器)
实现步骤
编写拦截器类实现 HandlerIntercepter 接口
preHandler:请求被处理之前
返回值
true:该请求继续执行
false:该请求被终止
参数
HttpServletRequest:Http请求
HttpServletResponse:Http响应
Object:拦截器Controller
postHandler:请求处理之后
参数
HttpServletRequest:Http请求
HttpServletResponse:Http响应
Object:拦截器Controller
ModelAndView:改变显示的视图或修改发往视图的方法
afterCompletion:请求结束之后
请求结束资源销毁
注册到 SpringMVC 框架中
配置拦截器拦截规则
可通过正则匹配
根据 URI 尾匹配拦截
多个拦截器
拦截顺序
preHandler:1->2->3
postHandler:3->2->1
afterCompletion:3->2->1
其它实现
WebRequestInterceptor
方法
postHandler
WebRequest
ModelMap
afterCompletion
WebRequest
Exception
preHandler
WebRequest
和 HandlerInterceptor 类似,无返回值不能终止请求
使用场景
使用原则
处理所有请求共性问题
乱码问题
权限验证问题
和过滤器区别
过滤器 filter 依赖 Servlet 容器,基于callback,过滤范围大
拦截器依赖框架容器,基于反射机制,仅过滤请求
视图
如 JSP 文件
0 条评论
下一页