我只想将端点公开到特定的测试环境中,并在prod中完全忽略它。我要一个单独的房间 @RestController 对于此终结点。我的问题是如何确保这个端点只能从testenv访问,而不能在生产环境中访问?我试着和他玩 @ComponentScan ,但没走多远。
@RestController
@ComponentScan
btqmn9zl1#
最好、最简单、最安全的解决方案是使用Spring轮廓。使用注解 @Profile 指定应在哪个环境中创建特定bean。请注意,如果环境与 @Profile 注解 value ,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,因此请将其理解为 or 条款。
@Profile
value
application.properties
src/main/resources/application.yml
src/main/resources/application-prod.yml
src/main/resources/application-int.yml
src/main/resources/application-dev.yml
src/main/resources/application-local.yml
src/test/resources/application-test.yml
or
@Profile({"dev", "local", "test"}) @RestController public class MyRestController { // implementation }
nzrxty8p2#
有办法。如果我没记错的话,基本上你可以在application.properties中设置你的环境。。然后,您可以对ednpoint说“仅当环境是dev时才可用”。两种方式:在项目的test部分中创建测试端点并使用@test符号,因此如果使用maven运行测试,则只运行测试端点正常的if状态。if(environment=dev){您做了需要测试的事情}else{静态响应表示这是一个开发端点}
2条答案
按热度按时间btqmn9zl1#
最好、最简单、最安全的解决方案是使用Spring轮廓。使用注解
@Profile
指定应在哪个环境中创建特定bean。请注意,如果环境与@Profile
注解value
,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,因此请将其理解为
or
条款。nzrxty8p2#
有办法。如果我没记错的话,基本上你可以在application.properties中设置你的环境。。然后,您可以对ednpoint说“仅当环境是dev时才可用”。
两种方式:
在项目的test部分中创建测试端点并使用@test符号,因此如果使用maven运行测试,则只运行测试端点
正常的if状态。
if(environment=dev){您做了需要测试的事情}else{静态响应表示这是一个开发端点}