操作環境ではprofileブランチ処理ができません


企業はprod環境に次のコードを導入しました.
@Value("$spring.profile.active")
private String activeProfile;

...

private boolean isProductionProfile() {
    return "prod".equals(activeProfile);
}
予想:
オペレーティング環境に配備されているため、isProductionProfileはtrueを返します.
実績:
isProductionProfileはfalseを返します.
その結果,運用において体現すべき機能(制限)は十分に体現されていない.
運用に投入されたコードをロールバックし、原因を特定する作業を行います.
コードにはいくつかの問題があります.
1つ目は、@Value("$spring.profile.active")セクションが無効です.
アクティブなプロファイルを取得します.でも間違ったところがあったので持って来れませんでした.
@Value("$spring.profile.active")
1. profile은 profiles로 바꾸어야 한다.
2. $ 다음 spring.profiles.active은 괄호로 묶어야 한다.

1,2 내용을 반영하여 코드 고침.
->
@Value("${spring.profiles.active}")
2番目の「prod」equalsセクションが無効です.
"prod".equals(activeProfile) 코드는, activeProfile이 하나일 것이라고 가정하고 있다.
하지만 실제로는 그렇지 않다.
prod, prod2와 같은 프로파일 여러 개가 동시에 활성화될 수도 있다.

prod, product2 프로파일 여러 개가 활성화돼어 있다면,
activeProfile은 "prod,prod2"로 저장될 것이다.
그러면 실제로 운영(prod) 프로파일에도 불구하고, "prod".equals(activeProfile)false가 된다.
もっとよくしたい.
  • では、一般にプロファイルに関連するブランチ処理は行われません.
  • プロファイル分岐処理を行う場合は、プロファイル関連変数の値を事前に決定するために、本番前にデバッグテストを行います.