在用Spring框架时提示WebMvcConfigurerAdapter已经过时,查看源码发现属于抽象类实现了WebMvcConfigurer接口,使用了适配器设计模式。
JDK8之前是没有默认实现接口的,如果直接实现WebMvcConfigurer接口就得在实现类重写所有接口,不是很方便。
@Deprecated
public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {
public WebMvcConfigurerAdapter() {
}
public void configurePathMatch(PathMatchConfigurer configurer) {
}
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
}
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
}
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
}
Java1.8有了默认接口就不需要再用适配抽象类了,直接实现WebMvcConfigurer接口即可。
public interface WebMvcConfigurer {
default void configurePathMatch(PathMatchConfigurer configurer) {
}
default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
}
default void configureAsyncSupport(AsyncSupportConfigurer configurer) {
}
default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
}
default void addFormatters(FormatterRegistry registry) {
}
default void addInterceptors(InterceptorRegistry registry) {
}
源码并不完全,可以看出方法是一样的。从而把继承抽象类换成实现接口,面向接口编程。