Spring IOC [构造器\静态工厂\工厂方法]
DI [构造器注入\set方法注入\p命名空间注入\SPEL表达式]
注解配置方式
component-scan
Component[Controller\Service\Repository]
Autowired Qulifired Resource[jar包]
Value
Scope init-method[PostConstruct]
destroy-method[PreDestroy]
Bean Configruation Import PropertySource
ComponentScan[s]
Spring AOP
切入点\通知\切面\织入\代理对象\目标对象
通知种类: 前置通知 后置通知 后置通知/异常后置通知
环绕通知
<aop:config>
<aop:pointcut expression='execution()'>
<aop:aspect>
- 不同的通知种类+切入点
Spring对于事务管理 -> Spring AOP技术
事务: 业务层面上不可分割的最小单位
特性: 原子性 一致性 隔离性 持久性
并发问题: 脏读 幻读[增删] 不可重复读[修改]
隔离级别: 读未提交 读已提交 可重复度 串行化
Spring事务管理的通知 PlatformTransactionManager
JdbcTemplate -> DataSourceTransactionManager
Hibernate5 -> Hibernate5TransactionManager
Spring 对于事务管理的属性设置:
1.隔离级别
2.传播行为
3.只读性 只有查询操作只读
Spring事务管理的准备工作:
1.数据库,实体类 account
2.dao层 JdbcTemplate
decreaseMoney(int srcId, double money)
increaseMoney(int destId, double money)
3.service层 转账业务
transfer(int srcId, int destId, double money)
dao.decreaseMoney
dao.increaseMoney
4.测试类 - 调用service.transfer方法
考虑Spring对于事务的管理 - AOP原理
1.通知类 DataSourceTransactionManager
2.切入点
3.事务属性设置 <tx:advice>
Spring 新特性
Spring + Mybatis整合 SSM
1.主配置文件Configuration
别名, 属性集, 连接数据库环境, 注册Mapper映射文件
2.Mapper映射文件 - SQL语句
select insert update delete
if foreach where sql
key value
namespace.id
动态代理开发Dao层
接口[方法] Mapper-sql语句
1.接口和映射文件 必须在同一个包下, 名字要一致
2.映射文件 中 namespace 必须是对应接口的全限定类名
3.接口中的方法名, 和mapper中的sql标签的id名要一致
4.方法参数类型, 和mapper中的parameterType类型一致
5.方法返回值类型, 和mapper中的resultType类型一致
- a.读取配置文件 Resource
b.构建者模式 创建了一个 SqlSessionFactory对象
c.工厂模式 获得了一个 SqlSession对象
d.动态代理模式 获得对应的Dao接口对象
e.调用接口方法 操作数据库
MyBatis + Spring 整合步骤
1.jar包 mybatis-spring-xx
2.MyBatis 核心对象 交给Spring容器管理
SqlSessionFactory 注册到Spring容器中
Dao 注册到Spring容器中[注意点: 没有实现类]