Java 如果@Bean被接受为初始化失败,我如何配置它?

Java 如果@Bean被接受为初始化失败,我如何配置它?,java,spring,spring-boot,Java,Spring,Spring Boot,我有一些初始化Google身份验证IdTokenProvider的代码,对象的类型与我的问题无关。然而,考虑到我的应用程序的当前状态,如果提供者未能初始化,这并不是世界末日。例如: @配置 公共类GoogleConfiguration{ @豆子 公共IdTokenProvider IdTokenProvider{ //这个可以扔 返回GoogleAuthUtils.getIdTokenProvider; } } @所需参数构造函数 公共类消费者{ 私有IdTokenProvider IdToke

我有一些初始化Google身份验证IdTokenProvider的代码,对象的类型与我的问题无关。然而,考虑到我的应用程序的当前状态,如果提供者未能初始化,这并不是世界末日。例如:

@配置 公共类GoogleConfiguration{ @豆子 公共IdTokenProvider IdTokenProvider{ //这个可以扔 返回GoogleAuthUtils.getIdTokenProvider; } } @所需参数构造函数 公共类消费者{ 私有IdTokenProvider IdTokenProvider; @Autowiredrequired=错误 public void setIdTokenProviderIdTokenProvider提供程序idTokenProvider{ this.idTokenProvider=idTokenProvider; } //…魔法 } 一个可行的解决方案是包装抛出代码并返回null,例如

@Slf4j @配置 公共类GoogleConfiguration{ @豆子 公共IdTokenProvider IdTokenProvider{ 试一试{ 返回GoogleAuthUtils.getIdTokenProvider; }捕获异常e{ log.error无法创建“IdTokenProvider”,e; 返回null; } } } 返回空bean是一种好模式。我相信spring注册了bean,但它的值实际上是null,而不是IdTokenProvider的实例。如果实例化失败,有没有办法避免注册该bean?

基于此,Spring 5不会注册空bean。因为您的代码将其视为可选的,所以它可以正常工作

您可能想,只有在验证提供者有效时,才能登记bean。成功案例。

< P>,Spring 5将不登记空bean。因为您的代码将其视为可选的,所以它可以正常工作


您可能想考虑,仅在验证提供程序有效时登记bean。成功案例。

谢谢,我不知道在5春季发生了变化。我不能使用任何我认为有意义的条件,因为类在那里。只是对该类的调用失败了,例如,您的凭据可能在环境或类似环境中丢失。谢谢,我不知道这在spring 5中发生了更改。我不能使用任何我认为有意义的条件,因为类在那里。只是调用该类失败,例如,您的凭据可能在环境或类似环境中丢失。