WebMvcConfigurationSupport 与WebMvcConfigurer冲突不生效案例

在使用springboot作为开发技术时,前后端通常采用动静分离的架构,但是后端经常需要向前端提供接口文档,对于一个小团队而言,这个时间浪费不起。

好在spring提供了swagger,能够方便生成在线文档,按照如下步骤完成swagger配置后,swagger-ui.html访问却报404错误。

第一步:加坐标

    <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency><!--swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

第二:添加配置类

@Configuration
public class WebMvcConfig  implements WebMvcConfigurer  {
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}
 

第三:加注解

 * @Api:用于标记API的信息,包括API的名称、描述和版本号等。
 * @ApiOperation:用于标记API方法的信息,包括方法的名称、描述和HTTP方法等。
 * @ApiParam:用于标记API方法的参数信息,包括参数的名称、描述和数据类型等。
 * @ApiResponse:用于标记API方法的响应信息,包括响应的HTTP状态码、描述和响应数据类型等。
 * @ApiModel:用于标记API的数据模型信息,包括数据模型的名称、描述和字段信息等。
 * @ApiModelProperty:用于标记API数据模型的字段信息,包括字段的名称、描述和数据类型等

第四:访问http://localhost:8080/swagger-ui.html结果报404

检查了好久,结果发现WebMvcConfigurationSupport 与WebMvcConfigurer冲突不生效案例,去了WebMvcConfigurationSupport 即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可能是以下原因导致webmvcconfigurer不生效: 1. 没有正确配置webmvcconfigurer,需要检查代码是否正确。 2. webmvcconfigurer被其他配置覆盖了,需要检查其他配置是否有影响。 3. webmvcconfigurer的优先级不够高,需要提高优先级。 4. webmvcconfigurer的配置与实际情况不符,需要检查配置是否与实际情况相符。 需要根据具体情况进行排查和解决。 ### 回答2: 首先,我们需要明确 WebMvcConfigurer 接口的作用。它是 Spring MVC 框架提供的一个编程接口,用于对 Spring MVC 配置进行定制化。它提供了很多方法,可以用来自定义拦截器、跨域处理、视图解析器、异常处理器等等。 然而,如果 WebMvcConfigurer 不生效,通常有以下几个可能的原因: 1. 忘记在 Spring MVC 配置文件中注册 WebMvcConfigurer 在 Spring MVC 配置文件中需要通过如下方式注入 WebMvcConfigurer: ```java @EnableWebMvc @Configuration public class WebMvcConfig implements WebMvcConfigurer { //... } ``` 其中 @EnableWebMvc 注解的作用是开启 Spring MVC 的自定义配置支持,而 WebMvcConfigurer 的实现类则负责具体的配置工作。 2. 没有正确实现 WebMvcConfigurer 接口 需要注意的是,实现 WebMvcConfigurer 接口时需要重写其一些方法,比如: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { //... } @Override public void addInterceptors(InterceptorRegistry registry) { //... } //... } ``` 如果没有正确重写这些方法,配置就不生效。 3. 被其它的配置覆盖 在 Spring MVC 配置文件中,可能有其它的配置也WebMvcConfigurer 的配置造成影响。比如,我们可能在配置文件中使用自动配置类代替手动的配置类,那么它就覆盖我们手动实现的 WebMvcConfigurer 接口。 解决这个问题的方法可以是禁用自动配置类,或者更改它们的优先级,使得我们手动配置的 WebMvcConfigurer 接口早于它们执行。 以上是 WebMvcConfigurer 不生效的一些可能原因和解决方法,我们需要仔细审查配置文件,定位具体的问题,才能成功解决。 ### 回答3: WebMvcConfigurer是一个在Spring MVC应用程序中用于定制和配置WebMvc的接口。它允许开发人员注册视图控制器、格式化器、拦截器等。但是有时候发现WebMvcConfigurer不生效导致配置无法生效,主要有以下几个原因: 1. 配置类没有被识别 如果你使用的是JavaConfig来进行配置,那么需要确保WebMvcConfigurer的配置类被Spring容器扫描到。因此,需要在类上添加注解@Component或@Configuration,或者在配置类所在的包上添加注解@ComponentScan。 2. 配置方法没有被调用 如果在WebMvcConfigurer的实现类中添加了定制方法,比如addViewControllers()、 addResourceHandlers()等,但并没有被调用到,那么可能是因为在配置类上没有添加注解@EnableWebMvc。只有添加了@EnableWebMvc注解或继承了WebMvcConfigurerAdapter类,该类中的方法才被调用。 3. 配置方法执行顺序的问题 WebMvcConfigurer中的方法执行顺序是由Spring MVC核心框架控制的。如果多个方法在调用中产生了冲突,那么可能导致某些配置无法生效。这时候,可以考虑使用Ordered接口或@Order注解来控制方法的执行顺序。 4. 配置文件与代码冲突 如果在WebMvcConfigurer配置类中定义了相同的配置项,可能导致配置无法生效。在使用JavaConfig时,应该确保配置文件中没有出现与WebMvcConfigurer类中相同的配置项。 总之,WebMvcConfigurer不生效可能是由于配置类没有被识别、配置方法没有被调用、配置方法执行顺序的问题或者配置文件与代码冲突等原因导致的。需要仔细检查配置文件和代码,确保它们都正确无误,才能使WebMvcConfigurer生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值