我在POM文件中有这两个依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-trace</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
我想在某些配置文件中禁用这些GCP功能。我需要在本地测试我的应用,但GCP一直在妨碍我。
6条答案
按热度按时间ffx8fchx1#
Spring在设置应用程序时依赖于自动配置。在许多情况下,它扫描类路径以查找特定的依赖项,如果存在,则执行自动配置。大多数情况下,可以通过提供特定的条件来绕过自动配置。
在遍历Spring云gcp模块时,我遇到了
StackdriverLoggingAutoConfiguration
类(source)和StackdriverTraceAutoConfiguration
(source)。堆栈驱动程序记录自动配置具有条件
ConditionalOnProperty(value="spring.cloud.gcp.logging.enabled", matchIfMissing=true)
,而堆栈驱动程序跟踪自动配置具有条件@ConditionalOnProperty(value="spring.cloud.gcp.trace.enabled", matchIfMissing=true)
我不完全确定这些属性是否与您使用的模块的自动配置有关,但您可以通过向应用程序添加以下内容来禁用日志记录-{localprofile}.properties:
hl0ma9xz2#
因为问题是
如何禁用Google云平台集成
我建议只使用以下命令更改配置
在我们的项目中禁用与Spring Cloud GCP相关的所有内容应该就足够了
可接受的答案告诉你如何禁用我们项目中使用的部分GCP特性。如果你有很多特性(日志记录、发布订阅、存储...),那么禁用所有特性可能会很麻烦。这是一个一次性禁用所有特性的快捷方式;- )
monwx1rj3#
您可以禁用跟踪、、日志记录并提供假ID,如下所示:
laximzn54#
如果要禁用gcp pubsud,则需要添加
spring.cloud.gcp.core.enabled =假
启用spring.cloud.gcp.发布订阅=假
ohfgkhjo5#
我知道它很旧,但是您也可以通过注解禁用AutoConfiguration类。
例如:
我希望有一天能帮助到别人:)
v440hwme6#
只是作为思考的食粮。
如果您正在构建一个应用程序,它可以在不同的环境中工作(就像我的情况一样-本地,或者使用GCP资源在GCP上)-无论如何都要避免使用
spring-cloud-gcp-starter
。properly
无法使用这些工具来管理应用的生命周期,因为它们都是静态初始化的,总是在GCP模式下工作,或者不工作。相反,我建议考虑使用好的旧Google库(f.e.https://cloud.google.com/storage/docs/reference/libraries)而不是
spring-starter
库来构建您自己的GcpFileProvider
或gcp-whatever-provider
。这种方法:
1.除了仅在需要时使用之外,您还可以省去管理这些配置的麻烦。
1.节省您从黑客通过这些静态初始化这样或那样的方式(完全可行,但imho不值得的努力,并导致非常复杂的设置真正简单的事情)。
1.为您提供一个选项,可以根据需要动态切换提供程序。
最后一点实际上可以很好地帮助集成测试。
P.S. "* 我只想让它在GCP上运行OOB *"的所有便利性都能完美地与这些Google库一起工作,就像它们与Spring一起工作一样。
GCP Bucket阅读器的小示例,在初始化时乐观地获取可用凭证,与spring-libs相同:
等级:
提供者:
然后,在我的测试中,我可以轻松地动态切换概要文件,甚至可以确保只有在GCP配置可用且有效时,集成测试才运行:
通用/本地:
GCP/整合: