Saltar al contenido

¿Cómo uso Spring Boot para servir static contenido ubicado en la carpeta de Dropbox?

Si te encuentras con algo que no entiendes puedes comentarlo y haremos todo lo posible de ayudarte lo más rápido posible.

Solución:

Puedes agregar el tuyo static controlador de recursos (sobrescribe el predeterminado), por ejemplo

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter 
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
        registry.addResourceHandler("/**").addResourceLocations("file:/path/to/my/dropbox/");
    

Hay algo de documentación sobre esto en Spring Boot, pero en realidad es solo una función estándar de Spring MVC.

También desde spring boot 1.2 (creo) simplemente puede configurar spring.resources.staticLocations.

Springboot (a través de Spring) ahora facilita la adición de controladores de recursos existentes. Vea la respuesta de Dave Syers. Para agregar a lo existente static controladores de recursos, simplemente asegúrese de usar una ruta de controlador de recursos que no anule las rutas existentes.

Las dos notas “también” a continuación siguen siendo válidas.

. . .

[Edit: The approach below is no longer valid]

Si quieres ampliar el valor por defecto static manejadores de recursos, entonces algo como esto parece funcionar:

@Configuration
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class CustomWebMvcAutoConfig extends
                    WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter 

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) 
    String myExternalFilePath = "file:///C:/Temp/whatever/m/";

    registry.addResourceHandler("/m/**").addResourceLocations(myExternalFilePath);

    super.addResourceHandlers(registry);
  


la llamada a super.addResourceHandlers configura los controladores predeterminados.

También:

  • Tenga en cuenta la barra diagonal final en la ruta del archivo externo. (Depende de sus expectativas para las asignaciones de URL).
  • Considere revisar el código fuente de WebMvcAutoConfigurationAdapter.

Basado en la respuesta de @Dave Syers, agrego la siguiente clase a mi proyecto Spring Boot:

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter 

 private static final Logger LOG = LoggerFactory.getLogger(StaticResourceConfiguration.class);

 @Value("$static.path")
 private String staticPath;

 @Override
 public void addResourceHandlers(ResourceHandlerRegistry registry) 

    if(staticPath != null) 
        LOG.info("Serving static content from " + staticPath);
        registry.addResourceHandler("/**").addResourceLocations("file:" + staticPath);
    
 

 // see https://stackoverflow.com/questions/27381781/java-spring-boot-how-to-map-my-my-app-root-to-index-html
 @Override
 public void addViewControllers(ViewControllerRegistry registry) 
    registry.addViewController("/").setViewName("redirect:/index.html");
 

Esto me permite iniciar mi aplicación Spring Boot con el parámetro --static.path me gusta

java -jar spring-app-1.0-SNAPSHOT.jar --static.path=/path/to/my/static-files/

Esto puede ser muy útil para el desarrollo y las pruebas.

Reseñas y puntuaciones del post

Si te sientes a gusto, puedes dejar un post acerca de qué te ha impresionado de este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *