【问题标题】:Keep some of Spring Boot MVC default configurations while implementing WebMvcConfigurer在实现 WebMvcConfigurer 的同时保留一些 Spring Boot MVC 默认配置
【发布时间】:2018-08-02 05:33:04
【问题描述】:

我想实现自定义 addCorsMappingsaddResourceHandlers ,同时保留其他 Spring boot MVC 配置(例如 getMessageCodesResolver

根据thisdoc:

如果你想保留 Spring Boot MVC 的特性并且你想添加 额外的 MVC 配置(拦截器、格式化程序、视图 控制器和其他功能),您可以添加自己的@Configuration WebMvcConfigurer 类型的类,但没有 @EnableWebMvc。如果你希望 提供 RequestMappingHandlerMapping 的自定义实例, RequestMappingHandlerAdapter,或 ExceptionHandlerExceptionResolver, 你可以声明一个 WebMvcRegistrationsAdapter 实例来提供这样的 组件。

但是实现WebMvcConfigurer 需要实现我不想要的所有其他方法。

虽然在this 视频教程中没有提出任何问题。我怎样才能只实现一些方法而不是全部?

注意:WebMvcConfigurerAdapter 已弃用。

【问题讨论】:

  • 不,它没有(如果您使用的是 Spring Boot 2,它需要 Spring Framework 5,该接口具有所有默认方法的接口。默认方法是 java 8 的新特性,Spring 使用那个。
  • 我使用的spring boot版本是'2.0.4.RELEASE',我使用的spring web mvc版本是2.5.2。我正在使用 Java 1.8。一切都应该到位,对吧?
  • 你到底为什么要使用 Spring 2.5.2?这不仅是古老的,而且是古老的,甚至可能行不通。就用Spring Boot自带的普通版(应该是5.0.8)。
  • 我使用 spring 初始化程序来创建项目。最新版本是 2.1.0 M1。谢谢你告诉我
  • 2.1.0 不是最终版本,但仍在开发中(M1 = Milestone,基本上是预发布/测试版本)。

标签: java spring


【解决方案1】:

Java 8 引入了default methods。这基本上意味着方法的默认实现,然后在接口上定义。

以 Java 8 为基准的 Spring 5 利用了这一点,对于几个接口,WebMvcConfigurer 就是其中之一,他们使用了这个。 WebMvcConfigurer 的所有方法都默认实现。

这意味着您可以只实现WebMvcConfigurer,而不是扩展WebMvcConfigurerAdapter。由于默认方法,WebMvcConfigurerAdapter 已被弃用,因为不再需要它。

因此,从 Java 8 和 Spring 5 开始,您不再需要实现接口的所有方法。当然,接口需要提供default 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 2017-01-29
    • 2020-11-14
    • 1970-01-01
    • 2019-08-16
    • 2016-06-06
    • 2016-11-07
    • 2017-09-15
    相关资源
    最近更新 更多