spring - @RefreshScope 副作用 - 自动配置、自动连接
问题描述
在 Spring Config Server 发生更改后,我正在使用 @RefreshScope 注释刷新我的 bean。这很好用,但在某些情况下会产生副作用。
第一种情况:我有一个实现 PermissionEvaluator (spring-security) 的 bean CustomPermissionEvaluator 以覆盖默认实现 (DenyAllPermissionEvaluator)。
import org.springframework.security.access.PermissionEvaluator;
@Component
public class CustomPermissionEvaluator implements PermissionEvaluator {
@Override
public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) {
如果我用 @RefreshScope 注释 CustomPermissionEvaluator,Spring 将不再考虑它,并且在此自定义实现上选择默认实现。
第二种情况:我有以下bean:
@Bean
@Profile("enable_mongo_ssl")
public MongoClientOptions mongoClientOptions() {
return getMongoClientOptionsBuilder()
.build();
}
如果我使用 @RefreshScope 对其进行注释,则 MongoAutoConfiguration 在构建 MongoClient 时不会使用它,而是使用没有证书的默认 mongoClientOptions。
最后一种情况:我定义了一个对象映射器:
@Bean
@Primary
public ObjectMapper defaultObjectMapper() {
return ObjectMapperProvider.defaultObjectMapper();
}
如果我使用 @RefreshScope 对其进行注释,我会收到以下错误:
more than one 'primary' bean found among candidates: [defaultObjectMapper, jacksonObjectMapper]
我猜这些示例与 @RefreshScope 注释导致 bean 被代理的事实有关。但是有没有一种干净的方法来继续使用这个注释并使这些功能起作用?
解决方案
推荐阅读
- user-interface - 提供自定义域
- python-3.x - 如何只用反斜杠转义而不转义字符
- sql - 选择历史记录中没有特定条目的行
- c++ - qpid proton API 是否应该与 qpid C++ 代理一起使用?
- webpack - Nuxt,如何包含 babel 插件
- vba - 在 .txt 文件 VBA 中搜索用户提供的字符串
- android - 我如何编码 SplashScreenActivity.kt 因为我的不起作用请看一下
- python - 尝试使用 Request 和 Beautiful Soup 获取怪异字符时出错
- python - 根据某些条件添加两行或多行
- reactjs - 反应节点模块冲突