2016-03-16 107 views
1

我一直在試圖解決這個問題,我找不到答案。我一直不得不使用src/main/resources/public/whatever...爲了從類文件中訪問靜態資源。我的印象是,如果你使用/static /public /resources... Spring Boot已經配置了這些路徑。從控制器和其他類彈簧啓動靜態資源

我在這一點上失去了和不知道如何可以訪問這些文件,而無需預先考慮src/main/resources/public.

編輯

根據有關靜態內容的建議,我創建了一個私有目錄保護文件等......我不想公開提供。並在/ public文件夾中留下css,圖片等等。

謝謝大家的意見和建議,我很感激!

+0

你是什麼意思的「訪問」?你的配置是什麼? – chrylis

+0

要讀取文件,寫入等...爲了進入資源目錄,我不得不使用src/main/resources ...我只在生成war文件時發現了這個問題,一切都崩潰了。我在下面使用我的答案,它按預期工作。 –

+1

即使用您的答案,您也無法安全地寫入該目錄。寫在其他地方,最好是可配置的。 – chrylis

回答

1

經過更多搜索後,我遇到了一個使用ClassLoader的示例。我只用了很短的時間,並沒有意識到所有可用的工具,可能有比這更好的方法;如果有,請告訴我。

ClassLoader classLoader = getClass().getClassLoader() 
new File(classLoader.getResource('public/file-name-or-directory').getFile()) 

到目前爲止,它看起來像它的工作,我需要做一些進一步的測試,並會回發,如果有任何問題。

1

你列出的目錄,/static/public/resources,是static content將由一個Web的應用程序提供服務了。像JavaScript文件和圖片這樣的東西,不管是誰請求它們,也不管什麼時候都是相同的,與JSP需要在服務器上處理每個請求相反。

如果您需要在Java類中的一個來訪問配置屬性(它必須是一個Spring bean),那麼你可以把它放在你application.properties文件,並有春季使用@Value註解注入它。從Spring docs

示例代碼:

import org.springframework.stereotype.* 
import org.springframework.beans.factory.annotation.* 

@Component 
public class MyBean { 

    @Value("${name}") 
    private String name; 

    // ... 

} 
1

春天引導期望你使用的內容直接送達 的src /主/資源/靜態

,並使用模板 的src /主/資源/模板