java - voladora - Recursos estáticos de arranque de primavera mapear hormigas hormiga con ResourceHandlerRegistry
que significa tener hormigas voladoras en casa (1)
Estoy usando Spring boot 1.3.3 Mis recursos de aplicación existen en src / main / resources / static example: src / main / resources / static / index.html Estoy intentando asignar mis recursos estáticos con un prefijo como / * / resource / **
Para que coincida con las URL como / main / resource / ** AND / app / resource / **
Cuando intento usar el siguiente código
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/*/resource/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
Se trata de un 404 cuando solicito dominio: 8080 / app / resource / index.html
Pero devuelve la página solicitada cuando lo hago domain: 8080 / index.html (Parecía que algunos matchers predeterminados están anulando los que intenté configurar).
Y cuando uso el siguiente código
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/app/resource/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
Devuelve el dominio de la página: 8080 / app / resource / index.html como se esperaba.
¿Hay algún problema con los matchers de hormigas que uso arriba? ¿Puedo usar recursos estáticos de la manera que quiero?
Cualquier ayuda es apreciada ..
Tuve exactamente el mismo problema y encontré la solución.
De acuerdo con el ''Spring Boot Cookbook'', el ResourceHandlerRegistry usa patrones de estilo de hormiga. Además encontré '' Spring: diferencia de / ** y / * con respecto a los caminos '', donde Devabc señala que ...
Tenga en cuenta que AntPathMatcher de Springs contiene errores: no se ajusta completamente al estilo Ant Pattern. Ejemplo: ** / *. Css no funcionará para rutas que comiencen con a /, mientras que debería estar de acuerdo con las convenciones de estilo Ant. - Devabc 12 de junio de 15 a 9:52
Para hacer coincidir las URL como http: // localhost: 8080 / frontend / 13 / style.css , donde 13 pueden variar, intente esto:
/* This did NOT work */
registry.addResourceHandler("/frontend/{id:[0-9]+}/**").addResourceLocations("classpath:/web-app/dist/");
/* This DID work, when removing the preceeding / */
registry.addResourceHandler("frontend/{id:[0-9]+}/**").addResourceLocations("classpath:/web-app/dist/");
Entonces, para usted esto significará: intente eliminar el ''/'' anterior en la url, es decir,
registry.addResourceHandler("*/resource/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);