springboot创建context的解析,我们直接看代码
Class<?> contextClass = this.applicationContextClass;初始化是空的
下面判断应用类型。返回不同的类。这里是SERVLET
case SERVLET: contextClass = Class.forName(DEFAULT_SERVLET_WEB_CONTEXT_CLASS);
我们看到的类是org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext
我们看BeanUtils.instantiateClass(contextClass)
首先判断是不是接口clazz.isInterface() java的内部类判断是不是接口。如果是接口不可以初始化
继续往下return instantiateClass(clazz.getDeclaredConstructor());
继续看这个方法我们之前的介绍过了。获取构造方法判断构造方法是不是私有的。然后判断是不是kotlin类型,进行不同的构造
此时创建AnnotationConfigServletWebServerApplicationContext ,我们看下这个类的构造方法