Spring + google cloud:没有可用的“com.google.cloud.storage.Storage”类型的合格bean
Posted
技术标签:
【中文标题】Spring + google cloud:没有可用的“com.google.cloud.storage.Storage”类型的合格bean【英文标题】:Spring + google cloud: No qualifying bean of type 'com.google.cloud.storage.Storage' available 【发布时间】:2020-05-24 16:00:01 【问题描述】:我正在尝试将 spring 库用于谷歌云 API:
spring-cloud-gcp-starter-vision
但是 Spring Application Context 加载失败并报错:
原因:org.springframework.beans.factory.UnsatisfiedDependencyException:在类路径资源 [org/springframework/cloud/gcp/autoconfigure/vision/CloudVisionAutoConfiguration$VisionOcrConfiguration.class] 中定义名称为“documentOcrTemplate”的 bean 创建错误:不满意通过方法 'documentOcrTemplate' 参数 1 表达的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.google.cloud.storage.Storage”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:...
我不知道如何处理它,因为它都是谷歌的代码,在我自己的代码中没有。
仅供参考,这是我尝试使用此库的方式:
@Service
public class OCRServiceImpl implements OCRService
private static Log LOGGER = LogFactory.getLog(OCRServiceImpl.class);
@Autowired
private CloudVisionTemplate cloudVisionTemplate;
@Autowired
private ResourceLoader resourceLoader;
【问题讨论】:
奇怪的是,它在本地工作,一旦放在 GCP 中的容器上抛出 UnsatisfiedDependencyException,我检查了 CloudVisionTemplate 的构造函数,它有 ImageAnnotatorClient。扫描这个包裹怎么样? 【参考方案1】:您需要将 both spring-cloud-gcp-starter-vision 和 spring-cloud-gcp-starter-storage 添加到您的依赖项中。
见cloud-vision-ocr-dependencies。
【讨论】:
【参考方案2】:你设置 spring.cloud.gcp.vision 了吗?
@ConfigurationProperties("spring.cloud.gcp.vision")
看看@CloudVisionAutoConfiguration
@Bean
@ConditionalOnMissingBean
public CloudVisionTemplate cloudVisionTemplate(ImageAnnotatorClient imageAnnotatorClient)
return new CloudVisionTemplate(imageAnnotatorClient);
看起来你缺少属性配置!!!
【讨论】:
以上是关于Spring + google cloud:没有可用的“com.google.cloud.storage.Storage”类型的合格bean的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud:Zuul 抛出“负载均衡器没有可用于客户端的服务器”
带有 Spring Cloud 和 Eureka java.lang.IllegalStateException 的功能区:没有可用于 localhost 的实例
无法在 Spring Data Cloud Spanner 中将 java.sql.Timestamp 转换为 com.google.cloud.Timestamp
Spring Cloud 服务查找错误:负载均衡器没有可供客户端使用的服务器