终于到了这一步,曾经无数次想过,没想到来得如此平缓。只要还在学习,就还在路上,就永远不晚。
IOC理解
1.理解概念
然后问自己那几个问题:
- Ioc是什么,控制了什么,谁控制谁,反转了什么,谁反转谁
- DI是什么,谁依赖谁,依赖了什么,为什么依赖,谁注入了什么,给谁注入
- Ioc和DI的关系
2.学习源码
3.自己实现
在此之前,需要熟悉java通过反射创建对象的方式: java创建对象的方式和差别
// TODO
springmvc
从理解到实现。
传统的基于servlet的spring和spring5+里面的基于reactive stream的东西,都需要熟悉。
1.流程理解
盗一下下面博客的图:
2.实现一个
AOP
aop是什么: 可以看作对OOP的一种扩展,目标是在扩展或增加新功能时解藕和,提高代码的可用性和灵活性。
aop可以做什么: 日志、性能、安全、事务、异常等。
Java 面向切面编程(Aspect Oriented Programming,AOP)—推荐,写的不错
1.原理理解
关于CGLib的原理学习了原理之后问自己以下问题,直到能快速回答出来为止:
- AOP是一种模式,与OOP的区别是什么
- AOP要解决什么问题,常见的有哪些
- AOP中间有哪些概念,解释切面、切点、连接点、通知等概念以及他们的关系
- spring的AOP是怎么实现的,2种实现的区别和优缺点?
2.spring AOP如何使用
关于使用,推荐几篇博客,写的很仔细:
学习完使用后问自己以下问题:
- 实现AOP涉及的注解:
@Aspect, @PointCut
如何使用? - 切点的书写规则, 可以是某个包、类、方法、带有某个注解等
- 通知的5种类型的含义和执行顺序:
@Before, @Around, @After, @AfterReturning, @AfterThrowing
2.实现AOP
Spring系列之AOP的原理及手动实现, 这篇文章介绍了aop涉及的设计模式。
跟着做一遍。
spring事务机制
如何使用
参考文章:透彻的掌握 Spring 中@transactional 的使用
然后问自己:
@Transactional
注解有哪些属性,分别代表什么意思?propagation
属性的3个级别什么意思?rollbackFor
在什么情况下不会回滚?- 只有public方法才有效吗?
- spring AOP的自调用问题: 非事务方法调用事务方法不会回滚
再深入一点
参考文章: 可能是最漂亮的Spring事务管理详解