一.简介
Spring最核心的两个特性IOC和AOP,这两个特性具体是什么,想必大家应该也都很熟悉了,这里不过多的解释了。
由于最近一直在学习Spring的源码,写个记录贴,同时加深自己的理解和印象。
同时由于本人基本没有接触过Spring的xml配置方式,所以本系列全部从注解的方式出发学习Spring的源码是如何做到IOC和AOP的。
同时本系列会从一个最简单的IOC容器进行向上扩展,学习Spring的代码思路,如何写出高可扩展的代码。
本人水平有限,若有不足和错误之处,忘请谅解。
二.IOC的简单实现
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.12</version>
</dependency>
两个依赖包,分别为测试的junit和一个工具包hutool
package com.lowSpring;
public class BeanDefinition {
private Class beanClass;
public void setBeanClass(Class beanClass) {
this.beanClass = beanClass;
}
public Class getBeanClass() {
return beanClass;
}
}
BeanDefinition 想必大家是很熟悉的了,在Spring中是非常重要的一个类,这里只是简单实现,只有一个参数 benaCLass。
package com.myframework;
import java.lang.annotation.*;
@Target({
ElementType.FIELD,ElementType.METHOD,ElementType.CONSTRUCTOR})
@Retention(RetentionPolicy.RUNTIME)
@Documented