Spring基础知识掌握(自整理,复习使用)
Spring
-
IOC
- 控制反转:把创建对象的权利交给Spring
-
创建对象
- 1.无参构造
- 2.静态工厂
- 3.实例工厂
-
管理对象
-
对象关系DI
- 构造器注入
- set注入
-
生命周期
- scope:prototype/singleton
- init-method
- destroy-method
-
对象关系DI
-
API
- BeanFactory:使用这个工厂创建对象的方式都是懒加载,在调用的时候再创建
- ClassPathXmlApplicationContext:使用这个工厂创建对象,他会根据scope智能判断是否懒加载,如果是单例则创建容器时就会创建里面bean的实例,如果是多例在获取使用时才会创建bean实例
- FileSystemXmlApplicationContext磁盘路径
- AnnotationConfigApplicationContext注解
- WebApplicationContext:web环境使用的容器
-
注解
-
创建对象
- Component:不分层的注解
- Controller:web层
- Service:service层
- Repository:dao层
-
管理对象
-
注入
- AutoWired
- Qualifier
- Resource
- Value
-
声明周期
- Scope
- PostConstruct
- PreDestroy
-
注入
-
新注解
- Bean:写方法上,将方法的返回值
- Configuration:标记配置类
- ComponentScan包扫描
- PropertySource:加载配置文件
- Import:导入其他配置类
-
创建对象
-
AOP
- 概念:面向切面编程,在不改变源码的情况下对方法进行增强,抽取横切关注点(日志处理,事务管理,安全检查,性能测试等等),使用AOP进行增强,使程序员只需要关注与业务逻辑编写.
-
专业术语
- 目标Target:需要增强的类
- 连接点JoinPoint:目标中可被增强的方法
- 切入点PointCut:被增强的方法
- 增强Advice:增强代码
- 切面Aspect:切点加通知
- 织入weaving:讲切面加载进内存形成代理对象的过程
- 代理Proxy
-
底层实现
-
JDK动态代理(默认)
- 基于接口:代理对象与目标对象是兄弟关系,目标类必须实现接口
-
CGLIB动态代理
- 基于父类:代理对象与目标对象是父子关系.目标不能被final修饰
- 修改默认代理方法:
-
JDK动态代理(默认)
-
增强种类
- 前置通知
- 后置通知
- 异常通知
- 最终通知
- 环绕通知
- 注意:使用注解的方式,最终通知和后置通知顺序换了,建议使用环绕通知
- 注解
- 配置
- 声明式事务管理
-
PlatFormTransactionManager:平台事务管理器:定义了commit/rollback
- Mybatis/jdbc:DataSourceTransactionManager
- Hibernater:HibernaterTransactionManager
-
TransactionManagerDifinition
-
传播行为:A-->B,在B上声明是否一定需要事务管理
- requerd:必须的(默认),如果A有事务那么就加入A的事务,如果A没有事务那么单独创建一个事务
- supports,如果A有事务则加入,如果没有就算了
-
隔离级别
- default:使用数据库默认的隔离级别(mysql:可重复读,oracle:读已提交)
- readuncommited:读未提交,不可以解决任何问题
- readcommited:读已提交,可以解决脏读问题
- repeatableRead:可重复读,可以解决脏读,不可重复读问题
- Serializbler:串行化,可以解决所有问题
-
超时时间:
- 默认-1(永不超时),事务一直不提交也不回滚的时间
-
是否只读:
- 默认false
-
传播行为:A-->B,在B上声明是否一定需要事务管理
-
TransactionManagerStatus:
- 事务的一些状态
- void flush() 刷新事务boolean hasSavepoint() 获取是否存在保存点boolean isCompleted() 获取事务是否完成boolean isNewTransaction() 获取是否是新事务boolean isRollbackOnly() 获取是否回滚void setRollbackOnly() 设置事务回滚
-
PlatFormTransactionManager:平台事务管理器:定义了commit/rollback
- 整合
-
Spring整合Junit
- 1.导入依赖spring-test
- 2.加注解:RunWith、ContextConfiguration
- 3.注入对象进行测试
-
Spring整合web
- 1.导入依赖spring-web
- 2.配置ContextLoadListener
- 3.配置
- contextConfigLocation
- classpath:applicationContext.xml
- 4.在Servlet中使用WebApplicationContextUtils获取容器对象
- 5.使用容器对象去获取Service对象
-
Spring整合Junit
备注:对应的有脑图下载。