Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以选择在Spring Boot中包括/排除每个环境部署的控制器吗?_Java_Spring_Spring Boot_Devops - Fatal编程技术网

Java 我可以选择在Spring Boot中包括/排除每个环境部署的控制器吗?

Java 我可以选择在Spring Boot中包括/排除每个环境部署的控制器吗?,java,spring,spring-boot,devops,Java,Spring,Spring Boot,Devops,我只想将端点公开给特定的测试环境,并将其完全保留在PROD中 我将为此端点使用一个单独的@RestController。 我的问题是如何确保该端点只能从测试环境访问,而不能在生产环境中访问 我试着使用@ComponentScan,但没有走多远。最好、最简单、最安全的解决方案是使用。使用注释指定应该在什么环境中创建特定bean。请注意,如果环境与注释值不匹配,则根本不会创建bean,因此它不会出现在应用程序容器中 假设以下application.properties文件定义了要隐藏此类REST控制

我只想将端点公开给特定的测试环境,并将其完全保留在PROD中

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


我试着使用
@ComponentScan
,但没有走多远。

最好、最简单、最安全的解决方案是使用。使用注释指定应该在什么环境中创建特定bean。请注意,如果环境与注释
值不匹配,则根本不会创建bean,因此它不会出现在应用程序容器中

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

  • src/main/resources/application.yml
    (常规配置)
  • src/main/resources/application-prod.yml
    (生产环境)
  • src/main/resources/application-int.yml
    (集成环境)
。。。您要使REST控制器对以下对象可见:

  • src/main/resources/application-dev.yml
    (开发环境)
  • src/main/resources/application local.yml
    (本地主机环境)
  • src/test/resources/application test.yml
    (单元/集成测试,请注意另一个文件夹)
您可以轻松地为较低的环境配置REST控制器。请记住,如果列出的任何概要文件(环境)处于活动状态,就会创建bean,因此请将其理解为
子句

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

有办法。如果我没记错的话,基本上你可以在application.properties中设置你的环境。。然后,您可以对ednpoint说“仅当环境为dev时才可用”

两种方式:

  • 在项目的测试部分创建测试端点,并使用@test符号,因此如果使用maven运行测试,则只运行测试端点

  • 正常的if状态
    如果(environment=dev){您做了需要测试的事情}否则{静态响应说这是一个开发端点}


  • 我认为
    @ConditionalOnProperty
    会帮助您从属性文件中为env检查kc,然后——如果(env.equals(“test”))返回redirect
    到404 0r 403,您可以使用
    @Profile
    注释您的控制器bean,并使用单独的概要文件启动开发和测试。