protected void applyInitializers(ConfigurableApplicationContext context) {
for (ApplicationContextInitializer initializer : getInitializers()) {
Class<?> requiredType = GenericTypeResolver.resolveTypeArgument(
initializer.getClass(), ApplicationContextInitializer.class);
Assert.isInstanceOf(requiredType, context, "Unable to call initializer.");
initializer.initialize(context);
}
}这里
Assert.isInstanceOf(requiredType, context, "Unable to call initializer.");
这句代码的意思,应该相当于判断
context instanceof requiredType
而老师在视频里却说反了,说成了这里是判断自定义的系统初始化器的泛型参数必须是 ConfigurableApplicationContext 的子类, 其实刚好相反,不然无法将context变量传给initialize方法。