gpt4 book ai didi

java - 我可以选择在 Spring Boot 中包含/排除每个环境部署的 Controller 吗?

转载 作者:行者123 更新时间:2023-12-05 03:44:21 26 4
gpt4 key购买 nike

我只想将端点暴露给特定的测试环境,而在生产环境中将其完全排除。

我将为该端点创建一个单独的 @RestController。我的问题是如何确保此端点只能从测试环境访问,而不能在生产环境中访问?

我尝试使用 @ComponentScan,但没有取得太大进展。

最佳答案

最好、最简单和最安全的解决方案是使用 Spring Profiles .使用注释 @Profile指定应在哪个环境中创建某个 bean。请注意,如果环境与 @Profile 不匹配注释 value,bean 根本没有创建,所以它不会出现在应用程序容器中。

假设以下 application.properties 文件定义了您要隐藏此类 REST Controller 的环境:

  • src/main/resources/application.yml(通用配置)
  • src/main/resources/application-prod.yml(生产环境)
  • src/main/resources/application-int.yml(集成环境)

...以及您想让 REST Controller 对以下对象可见的这些:

  • src/main/resources/application-dev.yml(开发环境)
  • src/main/resources/application-local.yml(本地主机环境)
  • src/test/resources/application-test.yml(单元/集成测试,注意不同的文件夹)

您可以轻松地为较低的环境配置 REST Controller 。请记住,如果列出的配置文件(环境)中任何处于 Activity 状态,就会创建该 bean,因此请将其理解为 子句。

@Profile({"dev", "local", "test"})
@RestController
public class MyRestController {
// implementation
}

关于java - 我可以选择在 Spring Boot 中包含/排除每个环境部署的 Controller 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66490780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com