2012-04-06 15 views
6

Spring-MVCの新機能。Spring-MVCのアプリケーションプロパティへのアクセス

.propertiesファイルに2つのプロパティ(uploadFolder = ..、downloadFolder = ..)を格納し、HomeControllerクラス()にアクセスします(MVCテンプレートによって自動的に作成されます)。

あなたはどのように...

1私を導いてくださいすることができ)は上記とapp.propertiesファイルを作成し、/ srcに/メイン/リソース下に置きました。これは正しいのですか、/ webapp/resourcesの下に置かなければなりませんか?

2)以下の方法で、beanをservlet-context.xmlに配置します。これは正しいです?

<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」名前空間含めるようにファイルの先頭に次のしたことを確認してください:アプリの文脈では、私は通常のsrc /メイン/リソースで私のプロパティファイルを置く

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" 

を。彼らがクラスパス上にいる限り、あなたは良いです。あなたのJSPで、その後

@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; 
    } 
} 

:次に、あなたのコントローラでは、あなたがあなたのフィールド/メソッドに注釈を付けることができます

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

HTH。ご質問がある場合はお知らせください。 src/main/resourcesのプロパティファイルからBeanを作成する)

+0

サービスクラスでそのプロパティを取得する方法をお考えですか? – Tom

+0

外部のlocactionのためのpropetiesファイルの場所をreplacinすることができますか? –

0

1)より良い方法がYES)src/main/resources

2を使用することですが、これmessagesは異なる目的

3を持っている

片道:

<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になければなりません。 参照の挿入方法を教えてください。それは私がこの記事を作る前にも欠けていた重要な部分です。 –

+0

@ srini.venigalla更新された回答を確認する –