spring boot 访问 jar 包内部的静态资源

相关依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
 </dependency>

静态文件存放位置:
spring boot 项目的 resources 下

resources
	|_ XXX-static //静态文件存放位置

文件结构

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.templatemode.TemplateMode;

import java.nio.charset.StandardCharsets;


@Configuration
public class XXXUiConfig implements WebMvcConfigurer {
    @Autowired
    private ApplicationContext applicationContext;
    @Bean
    public SpringResourceTemplateResolver myTemplateResolver() {
        SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
        resolver.setApplicationContext(this.applicationContext);
        resolver.setPrefix("classpath:/XXX-static/");
        resolver.setSuffix(".html");
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
        resolver.setCacheable(true);
        resolver.setOrder(10);
        resolver.setCheckExistence(true);
        return resolver;
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (!registry.hasMappingForPattern("/mypath/**")) {
            registry.addResourceHandler("/mypath/**")
                    .addResourceLocations("classpath:/XXX-static/");
        }
    }
}

总结:
1.创建一个spring boot 配置类(@Configuration)实现 WebMvcConfigurer ;
2.注册一个SpringResourceTemplateResolver 组件(@Bean),配置静态文件位置;
3.实现方法 addResourceHandlers,将url访问路径和静态文件进行关联;

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐