6

私は次の注釈を使用しています:

@ActivationConfigProperty(
    propertyName = "connectionParameters", 
    propertyValue = "host=127.0.0.1;port=5445,host=127.0.0.1;port=6600"),
public class TestMDB implements MessageDrivenBean, MessageListener

これらのIPアドレスとポートをそれぞれプルしてファイルに保存したいのjmsendpoints.propertiesですが、動的にロードします。このようなもの:

@ActivationConfigProperty(
    propertyName = "connectionParameters", 
    propertyValue = jmsEndpointsProperties.getConnectionParameters()),
public class TestMDB implements MessageDrivenBean, MessageListener

それを行う方法はありますか?

4

2 に答える 2

13

いいえ。注釈プロセッサ(使用している注釈ベースのフレームワーク)は、プレースホルダーを処理するためのアプローチを実装する必要があります。


例として、同様の手法がSpring

@Value("#{systemProperties.dbName}")

ここでは、その特定の構文を解析Springするためのアプローチを実装します。この場合、これは次のようなものに変換されます。System.getProperty("dbName");

于 2012-09-24T15:45:04.893 に答える
1

注釈は実行時に変更できるようには設計されていませんが、注釈値を動的に編集するために、 ASMなどのバイトコードエンジニアリングライブラリを利用できる場合があります。

代わりに、これらの値を変更できるインターフェイスを作成することをお勧めします。

public interface Configurable {
    public String getConnectionParameters();
}

public class TestMDB implements MessageDrivenBean, MessageListener, Configurable {

    public String getConnectionParameters() {
        return jmsEndpointsProperties.getConnectionParameters();
    }

    //...
}

よりキー値指向のインターフェースを作成したい場合もありますが、それがその一般的な概念です。

于 2012-09-24T15:49:17.290 に答える