私が現在達成しようとしているのは、いくつかの「spring.profiles.include」プロファイルを Config-Repo/Spring Config Server にライブにして、プロファイルを使用して簡単に Bean を有効/無効にできるようにすることです。ただし、Spring Config Server を介してこれを実行しようとすると、Config-Repo のプロファイルが構成クラスと Bean の作成方法に影響しないことに気付きました。
自分のプロファイルが bootstrap.properties または bootstrap-someProfile.properties にある場合、完全に機能します。ただし、プロファイルを Config-Repo に配置しても機能しません。
以下は、私が達成しようとしていることのサンプルコードです。代わりに「releasedKraken」Bean が必要なときに、「unreleasedKraken」Bean が使用されます。
@Controller
public class TestingController {
@Autowired
Kraken kraken;
/**
* Test endpoint for using profiles as a way to release/unrelease code
* @return
*/
@RequestMapping(value = "/v1/testing/kraken", method = RequestMethod.GET)
@ResponseBody
public String isThisCodeReleased()
{
return kraken.isThisCodeReleased();
}
}
@Configuration
public class KrakenConfiguration {
@Bean
@Profile("!releaseTheKraken")
public Kraken unrelaseKraken()
{
final Kraken kraken = () -> "The kraken is not released.";
return kraken;
}
@Bean
@Profile("releaseTheKraken")
public Kraken releaseKraken()
{
final Kraken kraken = () -> "The kraken has been released!";
return kraken;
}
interface Kraken {
String isThisCodeReleased();
}
}
kraken.yaml - Config-Repo に存在
spring:
profiles:
include: releaseTheKraken