gpt4 book ai didi

java - 我们可以有条件地声明spring bean吗?

转载 作者:IT老高 更新时间:2023-10-28 13:49:15 26 4
gpt4 key购买 nike

有没有一种方法可以有条件地声明一个 Spring bean,例如:

<bean class="path.to.the.class.MyClass" if="${1+2=3}" />

它会很有用,而不必使用配置文件。我没有想到具体的用例,但我想到了。

最佳答案

您可以使用 Spring4 中的 @Conditional 或 Spring Boot 中的 @ConditionalOnProperty

  1. 使用 Spring4()

如果您使用 Spring Boot,那么这可能是矫枉过正

首先,创建一个Condition类,其中ConditionContext可以访问Environment:

public class MyCondition implements Condition {
@Override
public boolean matches(ConditionContext context,
AnnotatedTypeMetadata metadata) {
Environment env = context.getEnvironment();
return null != env
&& "true".equals(env.getProperty("server.host"));
}
}

然后注释你的bean:

@Bean
@Conditional(MyCondition.class)
public ObservationWebSocketClient observationWebSocketClient() {
//return bean
}

2.使用SpringBoot:

@ConditionalOnProperty(name="server.host", havingValue="localhost")

在你的 abcd.properties 文件中,

server.host=localhost

关于java - 我们可以有条件地声明spring bean吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39857804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com