首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅为@Profile映射的@RequestMapping

仅为@Profile映射的@RequestMapping
EN

Stack Overflow用户
提问于 2017-10-03 04:48:17
回答 3查看 3.4K关注 0票数 5

是否可以创建一个只有在某个配置文件处于活动状态时才映射的方法级@RequestMapping

我知道只有在特定的概要文件处于活动状态时才可以创建控制器,但我指的是方法级别的方法@RequestMapping

EN

回答 3

Stack Overflow用户

发布于 2017-10-03 05:01:07

不是的。配置文件只影响bean的创建,而不影响方法。所以你要么创建整个控制器,要么不创建。

您的选择:

1)使用必须仅对给定配置文件可用的方法创建控制器。

2)如果你不想为给定的方法创建一个专用的控制器,只需要为给定的配置文件创建,你可以通过编程检查活动的配置文件,并返回404或任何你想要的东西。

代码语言:javascript
运行
复制
@Autowired
Environment environment;

public boolean isMyProfileActive() {
    for (final String profileName : environment.getActiveProfiles()) {
        if("mySpecificProfile".equals(profileName)) return true;
    }   
    return false;
}

@RequestMapping(...)
public ResponseEntity<?> myMethod(){
     if(isMyProfileActive()) return new ResponseEntity(HttpStatus.NOT_FOUND);
     //the rest of the code for the method
}
票数 3
EN

Stack Overflow用户

发布于 2017-10-03 04:59:02

不是的。

摘自spring文档:

@Profile注释可以通过以下任何一种方式使用:

将配置类作为直接或间接标注为@的任何类上的类型级批注,包括@Configuration classes

  • 作为元批注,目的是将自定义构造型批注
  • 组合为任何@Bean

上的方法级批注

如果@Configuration类被标记为@Profile,那么所有与该类关联的@Bean方法和@Import注释都将被绕过,除非一个或多个指定的概要文件处于活动状态。这与Spring XML中的行为非常相似:例如,如果提供了been元素的profile属性,则除非激活配置文件'p1‘和/或'p2’,否则不会解析been元素。同样,如果@Component或@Configuration类被标记为@Profile({"p1","p2"}),则除非激活配置文件'p1‘和/或'p2’,否则不会注册/处理该类。

票数 2
EN

Stack Overflow用户

发布于 2022-01-30 11:03:55

但是您可以有多个控制器,所以将特定于概要文件的方法放入一个新的方法中,并用@Profile("special_profile")标记它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46533517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档