1.此种语法。
接口.super.默认方法()
jdk1.8中,接口提供默认方法,防止接口修改,导致实现类都需要该的情况。
此种方法,可以在接口的实现类的实现方法中,调用接口中的同名被实现方法的默认方法。
这里的super是调用内存中,接口实现类的对象的父。也就是原接口中的默认方法。
2.这里调用接口中默认方法,可能是idea重写接口默认方法自带的功能。并不是springboot想让你通过这个来,介入默认boot的web配置。
真正的实现,可以注入自定义WebMvcConfigurer的实现类-配置类,可以做到自定义和boot的默认配置兼容的方法(只替换自定义的部分,其他没定义的依然是走默认)。
核心是:WebMvcConfigurerComposite这个类的
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { for (WebMvcConfigurer delegate : this.delegates) { delegate.addResourceHandlers(registry); } }
delegates中存放的就是WebMvcConfigurer的真正配置的实现类对象,当没有提供自定义提供配置bean时,只有默认配置bean一个,若配置了就是2个。循环录入配置,所以才做到boot的约定大于配置,自动兼容默认。