我有一些初始化google身份验证的代码 IdTokenProvider
(对象的类型与我的问题无关)。然而,考虑到我的应用程序的当前状态,如果提供程序未能初始化,这并不是世界末日。例如:
@Configuration
public class GoogleConfiguration {
@Bean
public IdTokenProvider idTokenProvider() {
// this can throw
return GoogleAuthUtils.getIdTokenProvider();
}
}
@RequiredArgsConstructor
public class SomeConsumer {
private IdTokenProvider idTokenProvider;
@Autowired(required = false)
public void setIdTokenProvider(IdTokenProvider idTokenProvider) {
this.idTokenProvider = idTokenProvider;
}
//...magic
}
一个可能的解决方案(有效)是 Package 抛出的代码并返回 null
,例如。
@Slf4j
@Configuration
public class GoogleConfiguration {
@Bean
public IdTokenProvider idTokenProvider() {
try {
return GoogleAuthUtils.getIdTokenProvider();
} catch (Exception e) {
log.error("Failed to create an 'IdTokenProvider'", e);
return null;
}
}
}
回归是一种好的模式吗 null
豆。我相信spring注册了bean,但它的值实际上是 null
而不是 IdTokenProvider
. 如果bean示例化失败,有没有办法避免注册它?
1条答案
按热度按时间pkmbmrz71#
基于Spring5处理空bean的方式的改变,Spring5将不注册(空)bean。因为您的代码将其视为可选的,所以它可以正常工作。
您可能需要考虑创建条件bean,以便仅在身份验证提供程序有效时注册bean(成功案例)。