spring源码
文章平均质量分 82
KennorWooo
这个作者很懒,什么都没留下…
展开
-
Spring源码系列(五)——@Aspect源码解析
首先我们看一下@Aspect的简单实例代码首先到Config类中添加@EnableAspectJAutoProxy注解打开AOP功能@ComponentScan(basePackages = "com.kennor.test")@EnableAspectJAutoProxypublic class Config {}自定义注解StudyTrainAnnotation用于标识连接点Joinpoint@Retention(RetentionPolicy.RUNTIME)@Target(Elem原创 2021-12-28 11:07:53 · 2541 阅读 · 0 评论 -
Spring源码系列(四)——Bean的循环依赖注入报错流程分析
上一篇文章我们介绍了Bean的实例化过程以及相互依赖注入的情况,本篇我们介绍一下循环依赖注入报错。首先我们要改一下StudentA和StudentB的代码,具体如下:可以看到在两个类中构造方法都注入了彼此,接着我们断点看一下代码的执行流程。首先执行到StudentA的doCreateBean此时缓存中没有StudentA实例,直接走到getSingleton方法然后走到方法中的beforeSingletonCreation方法将beanName保存在singletonsCurrentl原创 2021-12-24 15:58:26 · 753 阅读 · 0 评论 -
Spring源码系列(三)——Bean的实例化过程
上一篇文章我们已经介绍了Spring是如何将包路径下的类信息都扫描封装到BeanFactory中了,所以接下来我们着重看一下spring是如何通过BeanFactory创建Bean的实例。以我们示例代码中的StudentA为例,看看他的实例化过程是如何的@Overridepublic void preInstantiateSingletons() throws BeansException { // Iterate over a copy to allow for init methods原创 2021-12-24 15:48:43 · 837 阅读 · 1 评论 -
Spring源码系列(二)——@ComponentScan源码解析
首先看一下本次用到的简单的示例代码StudentA用@Component注解标识Config用@ComponentScan标识,扫描的基础包路径为:com.kennor.test最后Test运行的示例代码如下:public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config原创 2021-12-24 15:22:10 · 1671 阅读 · 0 评论 -
Spring源码系列(一)——配置Debug运行源码
1、JDK1.8版本2、spring 5.1.3.RELEASE3、安装配置gradleSpring源码下载Spring源码下载1、git clone --branch v5.1.3.RELEASE https://gitee.com/Z201/spring-framework.git2、gradle下载,gradle要JDK8的版本3、到下载的spring源码路径执行gradle命令,gradlew :spring-oxm:compileTestJava4、用idea打开spring源码工程原创 2021-12-24 14:59:30 · 1704 阅读 · 0 评论