Spring Boot 静态资源处理

摘要:spring Boot 默认的处理方式就已经足够了,默认情况下Spring Boot 使用WebMvcAutoConfiguration中配置的各种属性。 但是如果你想要自己配置一些项目的设置,你可以在@Configuration注解的配置类上增加@EnableWebMvc或者继承WebMvcConfigurationSupport和WebMvcConfigurationAdapter

正文:

首先解析@EnableWebMvc 、WebMvcConfigurationSupport和WebMvcConfigurerAdapter

# 在spring-boot+spring mvc 的项目中,有些时候我们需要自己配置一些项目的设置,就会涉及到这三个,那么,他们之间有什么关系呢?首先,@EnableWebMvc=WebMvcConfigurationSupport,使用了@EnableWebMvc注解等于扩展了WebMvcConfigurationSupport但是没有重写任何方法,所以有以下几种使用方式:

  1. @EnableWebMvc+extends WebMvcConfigurerAdapter,在扩展的类中重写父类的方法即可,这种方式会屏蔽springboot的@EnableAutoConfiguration中的设置
  2. extends WebMvcConfigurationSupport,在扩展的类中重写父类的方法即可,这种方式会屏蔽springboot的@EnableAutoConfiguration中的设置
  3. extends WebMvcConfigurerAdapter,在扩展的类中重写父类的方法即可,这种方式依旧使用springboot的@EnableAutoConfiguration中的设置

具体哪种方法适合,看个人对于项目的需求和要把控的程度,在WebMvcConfigurationSupport(@EnableWebMvc)和@EnableAutoConfiguration这两种方式都有一些默认的设定,而WebMvcConfigurationAdapter则是一个abstract class。 具体如何类内如何进行个性化的设置,可以参考以下文章:

Spring Boot:定制HTTP消息转换器

EnableWebMvc官方文档

然后重写addResourceHandlers方法

12345678

//例如对Swagger资源处理@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui.html").addResourceLocations( "classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations( "classpath:/META-INF/resources/webjars/");}

至于是继承WebMvcConfigurationSupport还是WebMvcConfigurerAdapter看个人需求。

Swagger路径问题

在使用Swagger时候是正常可以访问的在加入Security后发现若不排除Swagger-ui.html则资源权限不足401的问题,最后发现路径并不是springfox-swagger-ui.jar下的webjar/xxx,而是/swagger-resources/xx和/v2/xx:

这样就可以正常访问Swagger的ui界面啦

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python疯子

Django错误:RuntimeError: Model class user.models.UserAccount doesn't declare an explicit app_label

把 user 的引用改为 apps.user 的引用 将 from xxx.apps.users.models import User 改为 from ...

1.6K1
来自专栏JMCui

SpringMVC 异常处理.

一、异常处理 Spring提供了多种方式将异常转换为响应: 特定的Spring异常将会自动映射为指定的HTTP状态码     在默认情况下,Spring会将自身...

3488
来自专栏Java架构师历程

Spring工作原理

      内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、...

2172
来自专栏JAVA同学会

Spring Data(一)概念和仓库的定义

Spring Data的主要任务是为数据访问提供一个相似的、一致的、基于Spring的编程模型,同时又保留着下面各个数据存储的特征。它使得使用数据访问技术非常的...

1321
来自专栏JMCui

Netty 系列四(ChannelHandler 和 ChannelPipeline).

    先来整体的介绍一下这篇博文要介绍的几个概念(Channel、ChannelHandler、ChannelPipeline、ChannelHandlerC...

1242
来自专栏JavaEdge

责任链模式

3766
来自专栏Netkiller

Shell·xargs命令用法

本文节选自《Netkiller Shell 手札》 3.12. standard input/output 3.12.1. xargs - build and ...

3037
来自专栏技术博文

file_put_contents— 将一个字符串写入文件

将字符串写入到文件中,我们可以用fwrite写文件函数进行操作,今天写程序的时候,突然觉得其实file_put_contents()函数,用来写入字符串,后来仔...

3927
来自专栏java工会

Spring工作原理

内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、...

911
来自专栏我的博客

Zend_Config使用笔记

1.zend_Config被设计在应用程序中简化访问和使用配置数据。它为在应用程序代码中访问这样的配置数据提供了一个基于用户接口的嵌入式对象属性。配置数据可能来...

2725

扫码关注云+社区

领取腾讯云代金券