use*_*954 34 java spring properties
我有一个关于Spring注释配置的问题.我有一个豆子:
@Bean
public ObservationWebSocketClient observationWebSocketClient(){
log.info("creating web socket connection...");
return new ObservationWebSocketClient();
}
Run Code Online (Sandbox Code Playgroud)
我有一个属性文件:
@Autowired
Environment env;
Run Code Online (Sandbox Code Playgroud)
在属性文件中,我想要一个特殊的布尔属性
createWebsocket=true/false
Run Code Online (Sandbox Code Playgroud)
这标志是否应该创建bean ObservationWebSocketClient.如果属性值为false,我根本不想建立Web套接字连接.
是否有任何技术可能性来实现这一点?
bee*_*jay 50
虽然我没有使用过这个功能,但是看起来你可以用spring 4的@Conditional
注释来做到这一点.
首先,创建一个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("createWebSocket"));
}
}
Run Code Online (Sandbox Code Playgroud)
然后注释你的bean:
@Bean
@Conditional(MyCondition.class)
public ObservationWebSocketClient observationWebSocketClient(){
log.info("creating web socket connection...");
return new ObservationWebSocketClient();
}
Run Code Online (Sandbox Code Playgroud)
编辑的spring-boot
注释@ConditionalOnProperty
已经执行一般本; Condition
用于评估它的源代码可以在github上找到感兴趣的人.如果您发现自己经常需要这种功能,那么使用类似的实现是可取的,而不是进行大量的自定义Condition
实现.
chr*_*ke- 39
用bean注释你的bean方法@ConditionalOnProperty("createWebSocket")
.
请注意,Spring Boot提供了许多预先打包的有用条件.
归档时间: |
|
查看次数: |
35341 次 |
最近记录: |