Mic*_*ker 5 java spring spring-mvc spring-boot
现在我有一个简单的 Spring Boot 应用程序,它提供我放置在resources/static/img. 这适用于显示实际内容,但我想解决两件事:
我不希望这些图像中的任何一个与生成的.jar文件捆绑在一起,我知道将这些图像放在resources文件夹中会做到这一点。
使用我当前的设置,为了在 webapp 上看到一个新图像,我必须将它添加到文件夹中并重新启动它。相反,我希望 Spring 提供存在于特定文件夹中的任何静态内容,因此我可以在应用程序运行时添加图像,并让它们在localhost:8080/img/{image name}.
我试图通过设置一个资源处理程序来解决这个问题,但我不确定这与简单地从resources/static. 不幸的是,我仍在努力正确配置它,因为我根本看不到任何图像。这是我尝试过的:
@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/img/**").addResourceLocations("file:" + Application.IMAGE_DIR);
super.addResourceHandlers(registry);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序配置:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
static String IMAGE_DIR;
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws IOException {
SpringApplication.run(Application.class, args);
IMAGE_DIR = new File(".").getCanonicalPath() + "/img/";
}
}
Run Code Online (Sandbox Code Playgroud)
同样,我的目标是在我的项目的根目录中设置一个文件夹,该文件夹img将存储我希望 web 应用程序在其上提供的图像localhost:8080/img/{image name}。如果可能,我希望能够在应用程序运行时将内容添加到此文件夹中,并让 Spring 自动为它们提供服务,而无需重新启动它。
有没有人有任何想法?提前致谢。
您的方法的问题是您IMAGE_DIR在 Spring Boot 应用程序运行后设置,并且常量IMAGE_DIR未初始化并且是null。更改如下:
public static void main(String[] args) throws IOException {
IMAGE_DIR = "/opt/img/";
SpringApplication.run(Application.class, args);
}
Run Code Online (Sandbox Code Playgroud)
并删除所有File(".").getCanonicalPath()相关的东西,它就会起作用。当您在选定的目录中有新图像可以提供服务时,您的方法将满足您的需求。
| 归档时间: |
|
| 查看次数: |
7861 次 |
| 最近记录: |