随笔分类 - spring源码
记录分析spring源码的过程
摘要:最近看Nacos的源码,发现很多Configuration配置类上 @Configuration(proxyBeanMethods = false) 都把proxyBeanMethods设置成了false了。特地研究下。 源码中默认是true,对这个属性的解释也可以大概知道。 1: 如果为true,
阅读全文
摘要:AOP中的几个概念 Advisor 和 Advice Advice 我们通常都会把他翻译为通知,其实很不好理解,其实他还有另外一个意思,就是“建议”,我觉得把Advice理解为“建议”会更好。就是代理的逻辑。 比如,我们已经完成了一个功能,这时客户跟我们说,我建议在这个功能之前可以再增加一些逻辑,再
阅读全文
摘要:isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点: isAssignableFrom()方法是从类继承的角度去判断,instanceof关键字是从实例继承的角度去判断。isAssignableFrom()方法是判断是否为某个类的父类,instanceof关键
阅读全文
摘要:一、先把Gradle仓库下载下来: Gradle的仓库中的内容从这里下载下来: 链接:https://pan.baidu.com/s/15kYgKth3RCEowmsio_os6Q 提取码:2q3f 复制这段内容后打开百度网盘手机App,操作更方便哦 是一个压缩包,下载下来后,解压放在某个位置 二、
阅读全文
摘要:什么是循环依赖? 很简单,就是A对象依赖了B对象,B对象依赖了A对象。 比如: // A依赖了B class A{ public B b; } // B依赖了A class B{ public A a; } 那么循环依赖是个问题吗? 如果不考虑Spring,循环依赖并不是问题,因为对象之间相互依赖是
阅读全文
摘要:先补充一下@Configuration 注解的作用。 上节的源码分析中在bean工厂后置处理器 ConfigurationClassPostProcessor#postProcessBeanDefinitionRegistry 中解析配置类并开始扫描得到所有的 BeanDefinition 注册到容
阅读全文
摘要:Spring的启动过程如下: AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfig.class); applicationContext.ge
阅读全文
摘要:先看两个注解: @Component public class People { // bean销毁之前执行,容器关闭的时候执行 @PreDestroy public void predesory(){ System.out.println("predesory 执行了"); } // bean创建
阅读全文
摘要:自动注入补充的点: 1:AutowireMode 之前博客中讲到@Autowire,@Value,@Inject自动注入的处理都是在后置处理器 AutowiredAnnotationBeanPostProcessor#postProcessProperties中,这个后置处理器的调用是在 Abstr
阅读全文
摘要:Spring里面到底有几种依赖注入的方式呢? 1:手动注入 1)我们在xml文件中定义一个bean的时候,在bean标签下面使用<property name="bird" ref="bird"> 代码中提供set方法,把外部对象注入到bean中的方式就是属于手动注入,因为我们要手动的维护这个属性。
阅读全文
摘要:@Qualifier可以用来让程序员明确指定想要指定哪个bean,那有程序员就会想问,它和@Autowired和@Resource的区别是什么? 假设有如下bean定义: <bean id="user0" class="com.luban.entity.User"> <property name="
阅读全文
摘要:getBean的大致总流程如下: 下面只记录bean实例化到初始化的过程以及期间spring提供可以扩展的点。从下面getBean开始 public static void main(String []args){ AnnotationConfigApplicationContext applica
阅读全文
摘要:1:BeanDefinition spring主要是为了管理项目中的类和实例的,我们定义的类几种方式xml,注解,@Bean等在被spring读取到之后Spring内部维护我们定义的类的数据结构就是BeanDefinition,它是一个接口,里面定义类的className,是否是单例,是否是懒加载等
阅读全文