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 的配置
ProxyFactoryBean
1.基于 JDK 面向接口的动态代理 JdkDynamicAopProxy 生成代理对象。
JdkDynamicAopProxy 类实现了 AopProxy ,能够返回 Proxy ,并且,其自身也实现了 InvocationHandler 角色。也就是说,当我们使用 proxy 时,我们对 proxy 对象调用的方法,都最终被转到这个类的 invoke() 方法中。
2.基于 Cglib 子类继承方式的动态代理 CglibAopProxy 生成代理对象
(有关动态代理的知识点将在之后细说)