网上已经有各种分析spring-ioc容器启动以及加载的各种相关文章。特别是从SpringApplication.run(DemoApplication.class, args);这个方法切入的文章特别多。而且从这里切入也会比较复杂。本文将会从一个略微简单的入口切入,并且简略讲解一些相关架构。后续会附上独立的模块解析文章来详细分析。
代码版本
spring 5.0.8
jdk 1.8
简单的切入口AnnotationConfigApplicationContext
从类说明可以看到这是一个独立的应用上下文(application context)。主要是接受带注释的类作为输入,特别是@Configuration-annotated类。
下列代码中ConfigTest类就是一个@Configuration类。
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(ConfigTest.class);
ctx.refresh();
BeanTest beanTest = ctx