proyecto mvc ejemplo crear spring-mvc spring-boot

spring-mvc - ejemplo - mvc resources



Sirviendo recursos estáticos del sistema de archivos | Spring Boot Web (4)

La administración de la configuración Spring Boot permite múltiples estrategias aquí ( ver Boot reference documentation ).

Si bien el uso de una ruta estática y completa funciona aquí, le aconsejo que no use esa estrategia, ya que cada desarrollador de su equipo no compartirá el mismo diseño de espacio de trabajo.

Puede usar algunas de las estrategias elegidas en ese proyecto de ejemplo y hacer de esta ruta una propiedad de configuración.

Una vez que se trata de una propiedad, digamos resources.projectroot , hay varias formas de configurar esto:

  • cada desarrollador establece manualmente este valor en su archivo application.yml o application.properties
  • utilice variables env al ejecutar el proyecto como RESOURCES_PROJECTROOT=/home/user/demo/ ./gradlew bootRun (aquí, gradle + unix) o set RESOURCES_PROJECTROOT=%cd% mvn spring-boot:run (aquí, maven + windows)

Probablemente encuentre muchas otras soluciones que se ajusten a sus necesidades al observar su herramienta de compilación, su sistema operativo de elección y todas las estrategias de configuración que Boot proporciona.

Uso de una aplicación web de Spring Boot para tratar de servir mi recurso estático desde una carpeta del sistema de archivos fuera de mi proyecto.

La estructura de la carpeta se ve así: -

src main java resources test java resources pom.xml ext-resources (I want to keep my static resources here) test.js

Configuración de primavera: -

@SpringBootApplication public class DemoStaticresourceApplication extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(DemoStaticresourceApplication.class, args); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/test/**").addResourceLocations("file:///./ext-resources/") .setCachePeriod(0); } }

Al presionar '' http: // localhost: 9999 / test / test.js '' en mi navegador devuelve un 404.

¿Cómo debo configurar ResourceHandlerRegistry para que sirva recursos estáticos de la carpeta ''ext-resources'' mencionada anteriormente?

Debería poder activar / desactivar el caché para el entorno dev / prod.

Gracias

ACTUALIZACIÓN 1

Dando una ruta de archivo absoluta funciona:

@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/test/**") .addResourceLocations( "file:///C:/Sambhav/Installations/workspace/demo-staticresource/ext-resources/") .setCachePeriod(0); }

¿Cómo puedo proporcionar una ubicación relativa? La ruta absoluta hará que mi vida sea difícil durante el proceso de creación y despliegue.


file:/// es una URL absoluta que apunta a la raíz del sistema de archivos y, por lo tanto, file:///./ext-resources/ significa que Spring Boot está buscando recursos en un directorio llamado ext-resources en la raíz.

Actualice su configuración para usar algo como file:ext-resources/ como la URL.


Esto es lo que hice en la clase WebConfig, dentro del método addResourceHandlers:

boolean devMode = this.env.acceptsProfiles("development"); String location; if (devMode) { String currentPath = new File(".").getAbsolutePath(); location = "file:///" + currentPath + "/client/src/"; } else { location = "classpath:static/"; }


Spring Boot Maven Plugin puede agregar directorios adicionales a classpath. En tu caso, podrías incluir eso en tu pom.

<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> <configuration> <folders> <folder>${project.build.directory}/../ext-resources</folder> </folders> ... </configuration> </plugin>

De esta forma, no necesita incluir ningún código en sus clases. Simplemente inicie su aplicación web con

mvn spring-boot:run