当前位置: 首页 > 知识库问答 >
问题:

启动时修改@RequestMappings

帅颖逸
2023-03-14

是否可以在启动时更改@requestmapping值?

@Component
public class CustomRequestMappingHandlerMapping
    extends RequestMappingHandlerMapping
{
    @Override
    protected RequestMappingInfo getMappingForMethod( Method method, Class<?> handlerType )
    {
        RequestMappingInfo info = super.getMappingForMethod( method, handlerType );

        ApiVersion methodApiVersion = AnnotationUtils.findAnnotation( method, ApiVersion.class );
        ApiVersion typeApiVersion = AnnotationUtils.findAnnotation( handlerType, ApiVersion.class );

        if ( typeApiVersion == null )
        {
            return info;
        }

        Set<String> oldPatterns = info.getPatternsCondition().getPatterns();
        Set<String> patterns = new HashSet<>();

        for ( String p : oldPatterns )
        {
            for ( int v = 0; v < typeApiVersion.value().length; v++ )
            {
                ApiVersion.Version version = typeApiVersion.value()[v];

                if ( !p.startsWith( version.getValue() ) )
                {
                    if ( p.startsWith( "/" ) ) patterns.add( "/" + version.getValue() + p );
                    else patterns.add( "/" + version.getValue() + "/" + p );
                }
                else
                {
                    patterns.add( p );
                }
            }
        }

        PatternsRequestCondition patternsRequestCondition = new PatternsRequestCondition(
            patterns.toArray( new String[]{} ), null, null, true, true, null );

        RequestMappingInfo mappingInfo = new RequestMappingInfo(
            null, patternsRequestCondition, info.getMethodsCondition(), info.getParamsCondition(), info.getHeadersCondition(), info.getConsumesCondition(),
            info.getProducesCondition(), info.getCustomCondition()
        );

        return mappingInfo;
    }
}

共有1个答案

顾淳
2023-03-14

您可以通过实现handlermapping接口或扩展abstracturlhandlermapping动态添加requestMappings。

其思想是创建您自己的自定义处理程序映射,而不是使用默认实现,如SimpleURLHandlerMapping、DefaultanNotationHandlerMapping

 类似资料:
  • 本文向大家介绍ubuntu中修改grub的启动时间生成,包括了ubuntu中修改grub的启动时间生成的使用技巧和注意事项,需要的朋友参考一下 网上查询修改grub的启动时间基本上是修改 /etc/default/grub 然后运行update-grub重新生成/boot/grub/grub.cfg.然而这并不管用,依旧要等待30秒 查看/boot/grub/grub.cfg 从上面的配置可以看到

  • 打开conf/mvc/nutzbook-mvc-chain.js, 在ModuleProcessor后面加入一行 "org.nutz.integration.shiro.NutShiroProcessor", 最终效果 var chain={ "default" : { "ps" : [ "net.wendal.nu

  • 我开发了一个@JMSListener,它可以从Java属性中获取目标,并且运行良好。 但现在我需要能够在运行时更改队列的“目的地”,而不必重置整个应用程序,即使在运行时修改属性,队列“目的地”也不会更改。 以下是我们如何实现@JMSListener: 如您所见,我第一次从一个值表达式中获得了目标,它运行良好,但我不知道如何访问JMSListener并更改其目标。 这能做到吗?有没有办法改变目的地?

  • 本文向大家介绍ssh修改超时自动登出时间的方法,包括了ssh修改超时自动登出时间的方法的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知,当我们通过ssh远程登录到另一台服务器之后,如果长时间不做操作,那么会被服务器自动登出,并且会告诉你timed out waiting for input: auto-logout。如果不通过tmux这些辅助工具来维持session的话,那么我们需要通过修

  • 我最近读了一个关于JAVAFX的课程,我想制作一个应用程序来吸收我所学到的东西。我想做一个2D游戏,其中一个球是通过抛物线的方式动画。我对这两个对象使用和。我必须承认,我不知道到底是如何工作的,我的问题是我想让动画停止时,球到达窗口的底部。 我想用两种方法: null

  • 本文向大家介绍Django在pycharm下修改默认启动端口的方法,包括了Django在pycharm下修改默认启动端口的方法的使用技巧和注意事项,需要的朋友参考一下 如题,度娘前几条答案说的都不清不楚,俺来补上: 点击下拉选项中的Edit Configuration进入如下界面: 如果左侧没有出现django server,说明您的项目是不django,或者说还没有创建出可运行的manage.p