资源介绍
Spring
IOC
控制反转:把创建对象的权利交给Spring
创建对象
1.无参构造
2.静态工厂
3.实例工厂
管理对象
对象关系DI
构造器注入
set注入
生命周期
scope:prototype/singleton
init-method
destroy-method
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修饰
修改默认代理方法:
增强种类
前置通知
后置通知
异常通知
最终通知
环绕通知
注意:使用注解的方式,最终通知和后置通知顺序换了,建议使用环绕通知
注解
配置
声明式事务管理
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
TransactionManagerStatus:
事务的一些状态
整合
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对象
- 上一篇: Cpp_ali1:C ++代码
- 下一篇: linux网络源码