springboot笔记
IOC
(控制反转)实现组件之间的解耦,提供第三方容器来实现A与B 对象之间的调用关系,即A对象的主动控制权交到了第三方容器上所以叫控制反转。
也叫依赖注入:以第三方容器作为主体,将需要控制的信息注入到A或B对象中,到达解耦。
以两个方面解释一个东西。
反射机制:IOC的基本技术。间接的操控目标对象,不需要JVM提前编译,运行时动态加载,来获取对象的基本属性和方法
反射机制优点:运行时获取类的信息,进行反编译
反射机制缺点: 1反射消耗资源
2反射调用方法,权限安全问题,破坏封装性
IOC优点:实现组件的解耦,提高灵活性和可维护性
IOC缺点: 1反射需要创建对象,有一定效率影响
2还是不够完美,像xml的方式,类名更改后,xml的类名还是要手动更改
Aop
(面向切面编程)解决系统层面问题,比如日志,事务,权限,即拦截器。
重点名词:(织入)
1.有接口,使用JDK动态代理
- 创建接口来实现类代理对象,增强类的方法
利用Proxy 类中的newProxyInstance方法(参数:1类加载器,2增强犯方法的类接口,3实现该类的接口InvocationHandler),在handler中使用invok方法实现增强方法
2.没有接口,使用CGLIB动态代理
- 创建子类来继承类代理对象,增强类的方法
aop执行顺序
spring4
- 环绕通知前
- @Before
- 方法执行
- 环绕通知后
- @After
- @AfterReturning
异常
- 环绕通知前
- @Before
- @After
*@Afterthrowing
spring5
- 环绕通知前
- @Before
- 方法执行
- @AfterReturning
- @After
- 环绕通知后
异常
- 环绕通知前
- @Before
- @Afterthrowing
- @After