一、名词解释
IOC:控制反转 DI:依赖注入 AOP:面向切面 OOP:面向对象
二、AOP代理
主要分为静态代理和动态代理。静态代理的代表为AspectJ;动态代理的代表为Spring AOP(JDK动态代理和CGLIB动态代理)。
三、AOP的核心概念
连接点(joinpoint),切面(aspect),切点(pointCut),通知(advice),目标对象(target),织入(weaving),引入(introduction),代理(proxy)
四、AOP的三种实现方式
1、基于xml配置的实现
2、基于注解的实现
3、基于自定义注解的实现
五、Spring AOP通知的类型
前置通知(Before advice),后置通知(After advice),环绕通知(Around advice),返回后通知(After Returning advice),抛出异常后通知(After Throwing advice)
六、Spring AOP通知的顺序
图片摘录于:spring aop 五种通知的执行顺序 - 简书
七、DI(依赖注入)的方式
构造器注入,setter方法注入,接口注入。
八、获取Spring Bean的id
ApplicationContext ac = new ClassPathXmlSystemApplicationContext("classPath:applicationContext.xml");
UserDaoImp ud = (UserDaoImp)ac.getBean("UserDaoImp");
九、Spring Bean的生命周期
1、执行BeanFactoryPostProcessor实现类
2、执行BeanFactoryPostProcessor的postProcessBeanFactory方法
3、实例化BeanPostProcessor实现类
4、实例化InstantiationAwareBeanPostProcessorAdapter实现类
5、执行InstantiationAwareBeanPostProcessor的postProcessorBeforeInstantiation方法
6、执行Bean的构造器
7、执行InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法
8、为Bean注入属性
9、调用BeanNameAware的setBeanName方法
10、调用BeanFactoryAware的setBeanfactory方法
11、执行BeanPostProcessor的postProcessorBeforeInitialization方法
12、调用InitializingBean的afterPropertiesSet方法
13、调用<bean>的init-method属性指定初始化方法
14、执行BeanPostProcessor的postProcessorAfterInitialization方法
15、执行InstantiationAwareBeanPostProcessor的postProcessorAfterInitialization
16、容器初始化成功,执行正常调用后,下面销毁容器
17、调用DiposibleBean的destory方法
18、调用<bean>的destory-method属性指定的初始化方法