現在我有一個簡單的Spring Boot應用程序,可以爲我提供的靜態圖像提供resources/static/img
。這只是正常顯示的實際內容,但有兩件事情,我想修復:通過Spring Boot提供動態變化的靜態內容
我不希望任何這些圖像與生成的
.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);
}
}
,這裏是我的應用程序配置:
@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/";
}
}
同樣,我的目標是建立一個文件夾在我的項目的根目錄中稱爲img
將存儲的圖像,我希望webapp能夠在localhost:8080/img/{image name}
上投放。如果可能的話,我希望能夠在應用程序運行時向該文件夾添加內容,並讓Spring自動爲它們提供服務而無需重新啓動它。
有沒有人有任何想法?提前致謝。
感謝您的回答。事實證明你是對的 - 我所要做的就是將「IMAGE_DIR」行向上移動一行,並且完美地工作。謝謝! –