我目前正在尝试实现的是在 Config-Repo/Spring Config Server 中有一些“spring.profiles.include”配置文件,以便我可以通过使用配置文件轻松启用/禁用 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