
spring源码跟读
文章平均质量分 92
spring源码跟读
姑苏冷
不想成为技术大牛的程序员不是一个好的程序员
展开
-
@Configuration(proxyBeanMethods = false) 设置这个为false有啥用
最近看Nacos的源码,发现很多Configuration配置类上@Configuration(proxyBeanMethods = false) 都把proxyBeanMethods设置成了false了。特地研究下。源码中默认是true,对这个属性的解释也可以大概知道。1: 如果为true, 则表示被@Bean标识的方法都会被CGLIB进行代理,而且会走bean的生命周期中的一些行为(比如:@PostConstruct,@Destroy等 spring中提供的生命周期), 如果b...原创 2021-12-29 00:44:32 · 4824 阅读 · 1 评论 -
Spring源码分析(十)AOP源码分析
AOP中的几个概念Advisor 和 AdviceAdvice我们通常都会把他翻译为通知,其实很不好理解,其实他还有另外一个意思,就是“建议”,我觉得把Advice理解为“建议”会更好。就是代理的逻辑。比如,我们已经完成了一个功能,这时客户跟我们说,我建议在这个功能之前可以再增加一些逻辑,再之后再增加一些逻辑。在Spring中,Advice分为:前置Advice:MethodBeforeAdvice 后置Advice:AfterReturningAdvice 环绕Advice:M原创 2021-07-14 22:06:40 · 870 阅读 · 1 评论 -
Spring源码分析(九)循环依赖源码分析
什么是循环依赖?很简单,就是A对象依赖了B对象,B对象依赖了A对象。比如:// A依赖了Bclass A{ public B b;}// B依赖了Aclass B{ public A a;}那么循环依赖是个问题吗?如果不考虑Spring,循环依赖并不是问题,因为对象之间相互依赖是很正常的事情。比如A a = new A();B b = new B();a.b = b;b.a = a;这样,A,B就依赖上了。但是,在Spring中原创 2021-07-06 22:32:15 · 179 阅读 · 0 评论 -
spring源码分析(六) 销毁方法,初始化之前的方法加载和执行过程分析
先看两个注解:@Componentpublic class People { // bean销毁之前执行,容器关闭的时候执行 @PreDestroy public void predesory(){ System.out.println("predesory 执行了"); } // bean创建之前执行 @PostConstruct public void init(){ System.out.println(原创 2021-06-06 19:46:05 · 1280 阅读 · 0 评论 -
spring源码分析(五)@Autowire注入补充,@Resource源码分析
自动注入补充的点:1:AutowireMode之前博客中讲到@Autowire,@Value,@Inject自动注入的处理都是在后置处理器AutowiredAnnotationBeanPostProcessor#postProcessProperties中,这个后置处理器的调用是在AbstractAutowireCapableBeanFactory#populateBean 中:但是在这段逻辑上面有一段 AutowireMode的判断,会根据bean对应的BeanDefinition中...原创 2021-06-03 21:54:10 · 315 阅读 · 0 评论 -
Spring中@Auwowired注入源码跟读
Spring里面到底有几种依赖注入的方式呢?1:手动注入 1)我们在xml文件中定义一个bean的时候,在bean标签下面使用<property name="bird" ref="bird"> 代码中提供set方法,把外部对象注入到bean中的方式就是属于手动注入,因为我们要手动的维护这个属性。 2)也可以在bean标签下面使用构造函数标签,来指定使用那个构造函数来向bean中注入属性。2:自动注入 1)XML里面的自动注入 autowire可以...原创 2021-05-29 00:40:39 · 443 阅读 · 0 评论