如何在Springboot中动态更改@ConditionalOnProperty上传递的属性值?
我需要在运行时切换Springbean。我正在考虑使用如何在Springboot中动态更改@ConditionalOnProperty上传递的属性值?,spring,spring-boot,java-8,spring-restcontroller,Spring,Spring Boot,Java 8,Spring Restcontroller,我需要在运行时切换Springbean。我正在考虑使用@ConditionalOnProperty来实现这一点,但我还需要创建一个rest端点来动态更改此属性 我不知道如何创建rest端点。有人能推荐一下吗 public interface myInterface {} @服务 @ConditionalOnProperty(value=“is.new.service”,havingValue=“true”) 公共类serviceA实现myInterface{} @服务 @Conditiona
@ConditionalOnProperty
来实现这一点,但我还需要创建一个rest端点来动态更改此属性
我不知道如何创建rest端点。有人能推荐一下吗
public interface myInterface {}
@服务
@ConditionalOnProperty(value=“is.new.service”,havingValue=“true”)
公共类serviceA实现myInterface{}
@服务
@ConditionalOnProperty(value=“is.new.service”,havingValue=“false”)
公共类serviceB实现myInterface{}
公共类Myinitializer{
私有myA接口;
公共myinitializer(myInterface myA){
this.myA=myA;
}
}
应用程序属性
is.new.service = true
现在我还需要创建一个rest端点,它可以根据请求中传递的值动态更改值
is.new.service
。有人能推荐一下如何实现它吗?如果您计划创建rest端点,那么条件属性将不是正确的选择。这里的代码示例中提到的条件属性的使用在初始化过程中创建了一个bean。在运行时更改属性值也不会影响bean,因为它们已经在前面初始化过
考虑到您需要根据请求获取bean,添加一个查询参数以接受布尔值,并根据布尔值选择bean(您还可以适当地创建条件,以防需要进一步计算)。示例端点:
@RequestMapping(value = "/endpoint", method = RequestMethod.GET)
@ResponseBody
public Foo getFoo(@RequestParam boolean conditon)
{
private myInterface myA;
if(condition) {
myA = context.getBean("serviceA");
} else {
myA = context.getBean("serviceB");
}
.......
}