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

2024-05-14

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

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

这将很有用,而不必使用配置文件。 我心里并没有具体的用例,但它是我想到的。


您可以使用@条件从春天开始4 or @ConditionalOnProperty从春天开始Boot.

  1. 使用Spring4(only)

如果你是NOT使用SpringBoot, this 可能有点矫枉过正.

首先,创建一个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 file ,

server.host=localhost
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们可以有条件地声明 spring bean 吗? 的相关文章

随机推荐