我想知道为什么我必须总是在Spring的资源位置映射中添加“ classpath:”,这是最佳实践吗?
当前,我的项目是这样设置的,但是如果我删除“ classpath”,它什么也找不到(而且我也无法提供适当的直接链接)。对于完整的引导程序,我什至不得不使用“ webjars-locator”来使webjar可以访问(由于缺少透明度)。
任何人都可以解释,为什么需要类路径(并且没有直接链接),以及如何找到或重新构建项目以使其正常运行?
ResourceHandlers: @Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler(
"/webjars/**",
"/img/**",
"/css/**",
"/js/**")
.addResourceLocations(
"classpath:/META-INF/resources/webjars/",
"classpath:/static/img/",
"classpath:/static/css/",
"classpath:/static/js/");
}
index.htm:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Spring Security Example</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" type="text/css" th:href="@{/css/style.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/webjars/bootstrap/4.2.1/css/bootstrap.min.css}" />
</head>
<body>
<h1 class="color1">Hello, world! style</h1>
<p>
Click <a th:href="@{/hello}">here</a> to see a greeting.
</p>
<!-- include javascript in the footer -->
**<script type="text/javascript" th:src="@{/webjars/jquery/3.2.1/jquery.min.js}"></script>
<script type="text/javascript" th:src="@{/webjars/bootstrap/4.2.1/js/bootstrap.min.js}"></script>**
</body>
</html>
答案 0 :(得分:0)
使用类路径是正常的。如果您要从根路径额外加载资源,请使用
{"/", "classpath:/META-INF/resources/webjars/" ...}