具体的な方法はありますか?私はここで解決策を見つけようとしましたが、必要なものを見つけることができませんでした。私は、コマンドラインから複数の引数を受け付けるSpringブートアプリケーションを持っています。問題の引数はキュー名(つまり宛先)です。私たちの多くのキューのうちの1つになることができます。 JmsListener
は、私は基本的にこの@ JmsListenerの宛先パラメタの値を渡して使用する
public class Arguments {
private static queue
private static antoherArg
:
:
getters and setters
}
のように見え、私がdestination = Arguments.getQueue()
で言いたいクラスを持っているフォーム
@JmsListener(destination="dest_goes_here")
public void processOrder(Message message){. . .}
であるが、destination
だけstatic final
変数ことができそうですか?私は、エラーがそのことを暗示する小さなツールチップを提示するので、これを仮定します。
私はobvioulsy定数が含まれていることをConstants
と呼ばれるさらに別のクラスを持っているように、そしてpublic static final String QUEUE = "MyQ";
としてIハードコードキュー名は、それはそれでokですdestination = Constants.QUEUE
言うならば、私はまた、それをテストしました。
それで、私はリスナークラスでこのようなことをすることができると仮定しました。private static final String QUEUE = Arguments.getQueue();
しかし、どちらも好きではありません。ああ、私は困惑しています。
だから誰かが知識共有に喜んでいるなら、ここには本当に2つの質問があります。なぜ@JmsListener
はdestination
が私の2番目の解決策に設定されていますが、最初と最後ではありません。
次に、コマンドラインからの変数(つまり動的なもの)に目的地を設定するためにどのような戦略をとることができますか?
編集:値をコマンドラインから取得し、destination
として使用するJmsListenerクラスに渡す必要があるため、明示するために、Constants
クラスの値を保持できません。
ああ、私はそれが春のジャワ自体としない仕様だった認識に失敗しました。私はこれらのうちの1つを行って、それがどのようになっているかを見て、非常に有望であるように見えるでしょう。 –
最小限の労力を要するので、まずプロパティを試してみることをおすすめします。 –
私の誤解から苦労していくつかのコードを移動し、 'PropertySourcesPlaceholderConfigurer' beanクラスを設定する必要がありましたが、プロパティ提案のオーバーライドは魅力的に機能しました。ありがとう。 –