2017-07-07 10 views
3

私はキャメル2.17をスプリングで使っている初心者です。私は、Webサービスからエラーコードを受け取るプロセッサを持っていると私は現在、私は、プロパティインジェクションを使用して値myproject.errorCodeを読み取り、すべてのerrorCodeを解析していますapache camel + springでプロパティファイルの値を動的にロードする方法

myproject.errorCode=1001:error1 description, 1002:error2 description, 1003:.... 

のようなプロパティファイルにエラーの説明を設定し説明はうまくいきます。しかし、エラーコードリストは非常に巨大であり、単一のプロパティでそれを維持することは非常に困難です。だから私は

myproject.errorCode.1001=error1 description 
    myproject.errorCode.1002=error2 description 
    myproject.errorCode.1003=error3 description 
    ..... 

のような性質を分割したいと私は、この機能を実現するにはどうすればよい

String errorCodeRecieved = myWebService.getErrorCode(); 
    String errorString = "myproject.errorCode."; 
    String errorDescription = something.getProperty(errorString + errorCodeRecieved); 

のようなWebサービスから受信したエラーコードに応じて、私のプロセッサクラスのプロパティを読みたいです。事前のおかげで

答えて

2

あなたは、あなたのコンテキストで

@Bean 
MessageSource myMessageSource() { 
    ResourceBundleMessageSource r = new ResourceBundleMessageSource(); 
    r.setBasenames("/messages/sample"); 
    r.setDefaultEncoding("UTF-8"); 
    return r; 
} 

MessageSource利用できるを作成し、その後、同様に適切なメッセージを取得するために、あなたのプロセッサでこれを使用することができます:あなたの迅速なため

messageSource.getMessage(code, null, null, locale) 
+0

やあ、おかげで応答。あなたのソリューションは正常に動作しています。しかし、問題はクラスパスにプロパティファイルを追加する必要があり、プロダクションでクラスパスの外にプロパティファイルを設定する必要があることです。私は自分のクラスパス外のファイルパスを指定する方法を見つけることができませんでした。 ** ResourceBundleMessageSource **にファイル名を設定する方法はありません。 – Shameer

+0

あなたはReloadableResourceBundleMessageSourceというユーザーがいると思うかもしれませんが、おそらくあなたはその使用法に関する詳細情報を見つけることができます(https://stackoverflow.com/questions/9035588/dynamically-load-files-on-classpath-using-reloadableresourcebundlemessagesource) –

+0

こんにちは、 @Panayiotis Poularakisあなたの再生のためにありがとう...うまく働いています..私のプロパティファイルのパス+ propertynameとしてベース名を設定...受け入れられた答えとしてマーク... – Shameer

関連する問題