spring源码分析,重新认识spring 一

spring ioc 就是控制反转和依赖注入,就是从前对象由自己new 出来,现在对象由spring 容器统一管理和生成,然后通过xml 配置 ,由set 方法(没有set 方法,则直接赋值反射 把private 设置为可以修改,强制赋值),或构造器,或工厂方法注入进来,当然现在都是用注解,也可以由注解配置。

spring ioc它的实现方式:因为类之间是相互引用的,从前我以为是通过 递归去不停的先实例化和生成引用的类,后面想了下如果遇到的是 相互引用,岂不是死循环了,所以不是这样的,它的注入实现方式是 先实例化依赖链中的所有bean 对象,然后一个一个去注入,这里我理解错误的盲点在于 我觉得必须实例化好 成员变量才产生对象,其实是可以先产生对象,然后再去注入其中的成员变量。

spring aop 从前觉得是 动态代理,但是其实 动态代理只是它的一种实现方式。

它真实的是 面向切面编程,什么是切面?整体的局部就是切面,而面向切面编程就是把 一些局部的,可以重用的功能独立出来 分别开发,由相应的接口规则规定,因为一个这些局部需要需要再合起来使用,所以需要接口来作为规则,主要是为了解耦合 和 重用代码。

而jdk 的动态代理只是他的一种代码实现的方式,spring 的是使用 jdk 的动态代理来实现 接口的代理,如果没有接口 则使用 cglib 做 类的代理。

 问题和疑惑

为什么jdk 动态代理可以实现接口的代理,而cglib 实现类的代理?

下一章详细分析

    原文作者:Spring MVC
    原文地址: https://blog.csdn.net/bvcxz10328/article/details/78036813
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞