Java 如何使用ResourceHandlerRegistry和SpringMVC映射单个文件?

Java 如何使用ResourceHandlerRegistry和SpringMVC映射单个文件?,java,spring-mvc,Java,Spring Mvc,我有一个Spring MVC应用程序,其中我定义了一个静态资源haandler,如下所示: @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (resourceIdentifier != null) { registry.addResourceHandler("/admin-ui/**", "/admin-ui/").addResourceLocations(

我有一个Spring MVC应用程序,其中我定义了一个静态资源haandler,如下所示:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (resourceIdentifier != null) {
        registry.addResourceHandler("/admin-ui/**", "/admin-ui/").addResourceLocations(
                "file:" + resourceIdentifier.getResourcesLocation() + "/");
    }
}
(为了简洁起见,我省略了
HandlerInterceptor
声明的其余部分。)

现在,该应用程序的主要入口点是:

https://foo.mysite.com/admin-ui/index.html
相反,我希望入口点是:

https://foo.mysite.com/admin-ui

目前,这给出了一个404错误。启用此功能的最简单方法是什么,最好使用
ResourceHandlerRegistry

我添加了以下部分工作的控制器:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("admin-ui").setViewName("/admin-ui/index.html");
}
我需要在我的应用程序中做一些其他更改,因为其他资产(例如css、js和模板文件)是相对于index.html访问的(例如,路径中没有
管理ui/
)。我需要将其更改为服务器根目录的绝对路径,例如在index.html中:

<link href="css/bootstrap.min.css" rel="stylesheet">

变成这样:

<link href="/admin-ui/css/bootstrap.min.css" rel="stylesheet">


对应用程序中的所有URL执行此操作后,我现在可以使用或不使用
index.html

访问应用程序。据我所知,您不能使用
ResourceHandlerRegistry
。您需要将路径映射到
@Controller
处理程序方法,并将html文件直接写入响应主体。