新建maven项目,项目里面什么都没有,pom.xml没有任何依赖
手写spring,先要建一个容器类AnnotationConfigApplicationContext
java目录下建两个包:com.spring(源码类),和com.zhouyu
ApplicationContext类
spring包中新建,ZhouyuApplicationContext类,这是一个容器类。这个容器类里需要有构造函数,而且构造函数里面传class文件(spring的配置文件)。容器类里面还要有getbean方法。
zhouyu包里面的Test类,用来测试我写的spring框架
这里面需要一个参数,表示当前用户需要传给spring的一个spring配置文件
AppConfig类
所以,zhouyu包中新建一个Appconfig类,因为这个类当做spring的配置文件。所以可以对spring做配置,假如配置一个扫描路径,所以需要注解@ComponentScan,这个注解是spring提供的。
@ComponentScan
所以,在spring包中新建一个注解@ComponentScan,可以传路径进去,表示定义一个扫描路径
定义好@Component之后,在AppConfig.java里使用,设置扫描路径为service包
在spring包里写一个@Component注解,value里面可以传参数表示组件的名字,不穿参数则默认为""。
zhouyu包中写一个component组件,用@component注解上,组件名称为userService
写好这些之后,创建容器,就可以将AppConfig.class文件传进去了
zhouyuApplicationContext拿到配置类了之后,会在它的构造方法中,解析配置类,就是解析配置类中的注解。
比如拿到配置类之后,解析配置类,比如将@ComponentScan这个注解解析出来,解析出来之后,就能拿到程序员指定的扫描路径,然后就可以根据扫描路径进行扫描了。
下一节讲解拿到配置类了之后,如何构造spring容器,即构造方法内部实现