Spring源码
文章平均质量分 79
蜡笔没了小新git
井蛙不可以语于海者,拘于虚也;
夏虫不可以语于冰者,笃于时也;
曲士不可以语于道者,束于教也。
展开
-
重识Spring的BeanPostProcessor处理器
重识Spring的BeanPostProcessor处理器BeanPostProcessor是Spring用来实现快速拓展最为核心的接口,现在常说的AOP就是通过实现BeanPostProcessor接口来进行拓展。下面就先看下BeanPostProcessor到底长什么样?????BeanPostProcessor接口public interface BeanPostProcessor { //在bean init之前执行 @Nullable default Object pos原创 2021-04-20 13:37:31 · 150 阅读 · 0 评论 -
Spring为什么需要使用三级缓存?
Spring为什么需要使用三级缓存?有如下一个场景,X类中注入了Y类,Y类注入了X类,按照正常的类加载顺序,X类在注入Y的时候其实还没完全初始化完成,而注入的Y此时就开始实例化,发现也需要用到X,这是就去获取X,但是X并没有初始化完成,这个时候就会出现X在等Y初始化完成,而Y又在等X初始化完成,就进入了一个互相等待的情况。Spring是如何避免这种情况的呢?那就是三级缓存。先来说说Spring有哪三级缓存。一级缓存 singletonObject : 单例对象集合;二级缓存 earlySing原创 2021-04-15 15:29:13 · 6116 阅读 · 0 评论 -
@Autowired 和 @Resource比较
@Autowired 和 @Resource比较所属的包不同@Autowired:org.springframework.beans.factory.annotation,即为Spring中的类;@Resource:javax.annotation,属于jdk。使用上@Autowired和@Resource使用没什么区别,都可以作用在字段或者方法上;@Autowired :没有name和type属性,默认是注入方式是byType,当有多个类型匹配的bean时会抛出异常信息,问我借助于@Quali原创 2021-04-01 10:38:59 · 254 阅读 · 0 评论 -
@Autowired详解
@Autowired详解@Autowired是在Spring中新引入的注解,所属的包为org.springframework.beans.factory.annotation;定义如下:@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME原创 2021-03-31 21:11:29 · 10618 阅读 · 0 评论 -
@Resource详解
@Resource详解阅读本文之前希望读者最好已经对整个Bean的大体Spring执行顺序已经有了一定的了解。示例定义一个接口,表示水果类,只包含一个方法代表售卖。public interface Fruit { void sell();}有两个具体实现类,Apple????和Banana????。@Servicepublic class Apple implements Fruit { public Apple() { System.out.prin原创 2021-03-31 16:14:57 · 71312 阅读 · 4 评论 -
Spring 循环依赖
Spring —— 循环依赖Spring Bean默认都是以单例的形式存在,但是也支持prototype形式,这里主要介绍单例Bean。示例@Componentpublic class X { @Autowired private Y y; public X() { System.out.println("X construct..."); }}@Componentpublic class Y { @Autowired p原创 2021-03-26 14:23:32 · 105 阅读 · 0 评论 -
Spring Bean的完整生命周期回调
Bean的生命周期回调 Bean的生命周期回调主要是在Bean对象创建和销毁的过程中会执行一些init和destroy方法,了解不同形式的init和destroy声明方法,以及它们之间的先后执行顺序会有助于我们理解Bean的生命周期过程。下文主要介绍了生命周期回调的各种使用方式,以及在Spring中是如何实现的。常用的三种形式:InitializingBean 和DisposableBean接口,分别实现afterPropertiesSet 和 destroy方法;JSR-250下的@P原创 2021-03-25 14:40:38 · 554 阅读 · 0 评论