IOC 的思想: Spring 容器来实现这些相互依赖的对象的创建、协调工作。对象只需要关心业务逻辑本身。
IOC 容器的执行步骤:
applicationContext.xml
BeanDefinition
中,方便后续处理 registerBeanDefinition
方法向IOC容器注入 BeanDefinition
数据 registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
BeanDefinition
中的数据进行依赖注入 (通过反射机制实现的,在实例化一个类时,它通过反 射调用类中 setProperty
方法将事先保存在 HashMap
中的类属性注入到类中)
Spring通过 反射
来进行注入。Spring将我们配置的信息保存在一个 HashMap
中,HashMap 的 key 就是 Bean 的 id, value 就是 Bean 本身。
AOP 的配置
Spring AOP 的核心-
ProxyFactoryBean
1.基于 JDK
面向接口的动态代理 JdkDynamicAopProxy
生成代理对象。
JdkDynamicAopProxy
类实现了 AopProxy
,能够返回 Proxy
,并且,其自身也实现了 InvocationHandler
角色。也就是说,当我们使用 proxy
时,我们对 proxy
对象调用的方法,都最终被转到这个类的 invoke()
方法中。
2.基于 Cglib
子类继承方式的动态代理 CglibAopProxy
生成代理对象
(有关动态代理的知识点将在之后细说)