Spring resources非默认路径如何处理

Spring resources非默认路径如何处理

场景为没有前后端分离,使用了Jinjava 而没有使用Tymeleaf,却坚持使用了Spring框架。前端是朋友写的,我想把整个前端拿下来放到Resources里做一个资源文件。结果通宵写了一宿。主要两个问题,一个是怎么定位css,js等文件,还有一个是怎么处理JinJava的文件关系。
首先是css的定位方法。我把它放在src/main/resources中,前端是一个git库,我把它直接拉下来,文件夹名是main-site.我把可能有css和js的路径全都加了。


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyConfig implements WebMvcConfigurer{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/main-site/","classpath:/main-site/static/","/main-site/templates");
    }
}

接下来是Jinjava怎么解析了,这里到处找文档都找不到,在某个野站上抄了一个

import com.google.common.io.Resources;
import com.hubspot.jinjava.Jinjava;
import com.hubspot.jinjava.interpret.JinjavaInterpreter;
import com.hubspot.jinjava.loader.ResourceLocator;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;

public String index() throws IOException {
        Jinjava jinjava = new Jinjava();
        jinjava.setResourceLocator((s, charset, jinjavaInterpreter) -> Resources.toString(Resources.getResource(String.format("main-site/templates/%s", s)), StandardCharsets.UTF_8));
        Resource resource = resourceLoader.getResource("classpath:main-site/templates/page/index.html");
        String content = new String(Files.readAllBytes(resource.getFile().toPath()));
        return jinjava.render(content,null);
    }

然后它成功跑起来了。

你可能感兴趣的:(spring,java,后端,jinjava)