ConditionalOnProperty注釈にホスト名を使用して

スコット法:

我々は持っている@Scheduled状態チェックを行うプロセスを。しかし、それはサーバーのアレイ上で動作し、それぞれに同じ情報を提供するので、我々は5冗長なメッセージを取得しています。

この問題を解決するには、私が見つかりました@ConditionalOnPropertyためにハードコードされた私のホスト名と私のdevのボックスに素晴らしい作品どのhavingValueプロパティと設定statusHostにプロパティをapplication-dev.ymlそれは彼らが一致したときに実行され、そうでないときないので、これは偉大なセットアップのように思えます。また、YMLプロパティを持っていない場合、それはその環境のために任意のサーバ上で実行されないという利点があります。

だから、コード内で次のようになります。

@Component
@ConditionOnProperty(prefix="status.", value="host", havingValue="my-dev-box")
public class StatusChecker {}

そして、YML:

status:
  host: my-dev-box

私はクリーンアップ、物事に行き、右のようなものに入れたときに残念なことに、私はそれが実現havingValue定数を必要とし、私は、もちろん、動的にサーバのホスト名を見つけています。

@ConditionOnProperty(prefix="status.", value="host", havingValue=System.getProperty("hostName")  // property set elsewhere

だから私の質問は、誰もがこのための回避策を持っているかどうか?これは、使用する必要はありません。@ConditionalOnProperty私は、そのソリューションが好きなものの、。

ライアン・ドーソン:

私はあなたが使うことができると思うカスタム条件で@Conditionalをまたはあなたの@Scheduledメソッドの開始時に、あなたが探している値に対してif文をそのチェックのホスト名(例のInetAddress.getLocalHost()を使用。GETHOSTNAME())可能性があります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=219148&siteId=1