概述
前言
- spring boot 2.4.3
spring boot 支持webjars
通过添加 ResourceHandlerRegistry 实现。有两种方式可以实现:
- spring boot默认对webjars提供支持。
- 手动添加对webjars的支持。
参考WebMvcConfigurationSupport
。
spring boot默认对webjars提供支持
WebMvcAutoConfiguration
类自动配置时,添加了对webjars的支持。
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
ServletContext servletContext = getServletContext();
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (servletContext != null) {
registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION));
}
});
}
WebMvcAutoConfiguration
类自动配置的起效条件:
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
...
}
当满足WebMvcAutoConfiguration
类自动配置的起效条件时,默认对webjars提供支持。当你引入的jar中,有付合webjars规则的,就可以通过webjars访问到。比如:http://localhost:8080/webjars/jquery/3.1.1/jquery.min.js
。
当不满足WebMvcAutoConfiguration
类自动配置的起效条件时,不支持webjars。此时,需要手动添加对webjars的支持。
手动添加对webjars的支持
假如你按照某个教程自定义一个WebMvcConfigurationSupport
,并得到了想要的功能时,WebMvcAutoConfiguration
将不会起效。此时,如果还需要对webjars的支持,就需要手动添加对webjars的支持。(ps:尽量不要自定义WebMvcConfigurationSupport
,让WebMvcAutoConfiguration
起效。WebMvcAutoConfiguration
不起效后,那WebMvcAutoConfiguration
中提供的默认配置就不起效。此种情况下,你需要手动添加那些本该默认提供的功能。另,大多数时候,你自定义WebMvcConfigurationSupport
得到的功能,其实有另外一种方法。)
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7-1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 自定义WebMvcConfigurationSupport,添加 ResourceHandlerRegistry 实现。
@Configuration
// 此时,WebMvcAutoConfiguration将不会起效
public class CustomWebMvcConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/webjars/**")) {
registry.addResourceHandler("/webjars/**").addResourceLocations(
"classpath:/META-INF/resources/webjars/");
}
}
}
- 启动项目后,访问地址:
http://localhost:8080/webjars/jquery/3.1.1/jquery.min.js
如果想要了解的更多,可以参考这里。
参考
https://spring.io/blog/2014/01/03/utilizing-webjars-in-spring-boot
https://blog.coding.net/blog/spring-static-resource-process
最后
以上就是慈祥口红为你收集整理的【spring boot】支持webjars前言spring boot 支持webjarsspring boot默认对webjars提供支持手动添加对webjars的支持参考的全部内容,希望文章能够帮你解决【spring boot】支持webjars前言spring boot 支持webjarsspring boot默认对webjars提供支持手动添加对webjars的支持参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复