2012-04-06 25 views
6

Spring-MVC的新手。訪問Spring-MVC中的應用程序屬性

我想在.properties文件中存儲兩個屬性(uploadFolder = ..,downloadFolder = ..),並在HomeController類(由MVC模板自動創建)中存取它。

能否請您指導我的app.properties如何..

1)創建了上述文件並放置在/ src目錄/主/資源。這是正確的,還是應該在/ webapp/resources下?

2)以下面的方式在servlet-context.xml中放置一個bean。它是否正確?

<beans:bean id="messageSource" 
    class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <beans:property name="basename" value="app" /> 
</beans:bean> 

3)現在我該如何在Java控制器中訪問它?

4)如何在JSP中訪問它們?

我不知道我會多麼感謝你。

回答

20

有幾種不同的方法可以做到這一點。我做了以下。在應用方面:

<util:properties id="myProps" location="classpath:app.properties" /> 

確保您在爲您的文件包括「UTIL」命名空間的頂部以下內容:

xmlns:util="http://www.springframework.org/schema/util" 
xsi:schemaLocation= "... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd" 

我通常把我的屬性文件中的src/main /資源。只要他們在班級路線上,你就很好。然後,在你的控制器,你可以註釋與你的領域/方法:

@Controller 
public class MyController { 

    @Value("#{myProps['uploadFolder']}") 
    private String uploadFolder 

    @Value("#{myProps['downloadFolder']}") 
    private String downloadFolder 

    @RequestMapping("myPage") 
    public String loadPage(ModelMap m) { 
     m.addAttribute("uploadFolder", uploadFolder); 
     m.addAttribute("downloadFolder", downloadFolder); 
     return "myPage"; 
    } 

    public void setUploadFolder(String uploadFolder) { 
     this.uploadFolder = uploadFolder; 
    } 
    public void setDownloadFolder(String downloadFolder) { 
     this.downloadFolder = downloadFolder; 
    } 
} 

然後,在你的JSP:

Download folder: ${downloadFolder} <br/> 
Upload folder: ${uploadFolder} 

HTH。如果您有任何問題,請告訴我。

+0

想知道如何在服務類中獲取該屬性? – Tom 2012-04-18 02:54:21

+0

你可以這樣做嗎?替換外部locaction的propeties文件的位置? – 2014-07-02 15:53:56

0

1)更好的方法是使用src/main/resources

2)是的,但是這messages必須做出一個bean不同的目的

3)

一種方式從性質src/main/resources文件:

<bean id="foldersConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="location" > 
     <value>/WEB-INF/classes/folders.properties</value> 
    </property> 
</bean> 

而在你的控制器只需注入參考。

這裏控制器將如何模樣,在xml:

<bean id="myController" class="my.project.package.controller.MyController"> 
... 
<property name="foldersConfig" ref="foldersConfig" /> 
</bean> 

控制器類,相關的部分:

public class MyController extends ... { 

private Properties foldersConfig; 

public void setFoldersConfig(Properties config) { 
    this.foldersConfig = config; 
} 
} 

4)如果你把性的視圖,您可以訪問 - 模型,但這不是很好的解決方案。把你需要的東西放在控制器(路徑)中並放入結果中。

+0

我推斷文件應該位於src/main/resources下,它應該被稱爲folder.properties,並且上面的bean規範應該在servlet-context.xml中。 你可以請示出如何注入參考?即使在發佈這篇文章之前,這是我失蹤的關鍵部分。 – 2012-04-06 14:58:42

+0

@ srini.venigalla檢查它被更新的答案 – 2012-04-06 15:20:06

相關問題