需要Mapping覆盖的情况

通常为了开发简便,我们一般都使用注解@Controller、@RequestMapping来配置mapping,然后使用配置扫描来自动注册Controller。

在项目开发时,分模块是常用的做法,如果模块之间包名重叠,所有controller都扫描进去了的话,包含相同的mapping则会出现上面的启动报错的情况。
当然,我们可以通过人为约定为每个模块加上特别的标示。
如果我们知道现在所写的mapping将是我们要用的mapping,而之前的mapping想要废弃,而又不想修改以前的方法,这时覆盖就是一个比较理想的方案。
所有项目都依赖ui项目jar,公共服务url难免有重复同时功能不同的情况,
如在老项目 / -> login.html页面。
但是在新vue项目 / -> index.html 页面。
这就尴尬了。

Spring MVC Mapping重复定义

这博主说的就是我们要解决的。

不扫描父类,但是mapping写上默认的,子类继承同时给个@Controller


public class WebController {@RequestMapping("/")public String index() {return "redirect:/login.html";}
}@Controller
public class  VueController  extends WebController {public String index() {return "redirect:/index.html";}
}

但是这样涉及到一个问题,我在其他的项目也都要实现子类。这样维护就麻烦了。
能不能在没有子类的时候,才实例化。有子类就走子类的?

ConditionalOnMissingBean注解可以实现

@ConditionalOnMissingBean
仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean
@ConditionalOnClass
(某个class位于类路径上,才会实例化一个Bean)
@ConditionalOnClass({JWT.class, DefaultWebSecurityManager.class})
@AutoConfigureAfter
在加载参数类之后再加载当前类 有时配合着@import 注解使用?
@AutoConfigureAfter(WebMvcAutoConfiguration.class)

@Controller
@ConditionalOnMissingBean(name = {"vueController"}
)
public class WebController {public WebController() {}@RequestMapping({"/"})public String index() {return "redirect:/login.html";}@RequestMapping({"/browser"})public String browserIndex() {return "redirect:/browser/index.html";}@RequestMapping({"/cm"})public String cmsIndex() {return "redirect:/smanagerLogin.html";}
}
@Controller
public class  VueController  extends WebController {public String index() {return "redirect:/index.html";}
}

但是2个VueController必须对应否则报错。
有不有更好的办法? 没有了,规定一下不是挺好吗?

参考资料

  • SpringMVC 类内部的RequestMapping注解能否被继承? - 剑握在手 - 博客园
  • spring_@ConditionalOnBean_写给自己看的 - maqingbin8888的专栏 - CSDN博客
  • Spring MVC Mapping重复定义 _ Java _ 苍之涛工作室

使重复的Spring-MVC的url-mapping具有优先级相关推荐

  1. Spring MVC 基于URL的拦截和映射规则

    转载自 Spring MVC 基于URL的映射规则(注解版) url-pattern 如果看过前一篇入门的帖子,应该了解到spring mvc在启动前必须要在web.xml中配置servlet,这样才 ...

  2. Spring MVC请求url无效问题思考

    一.Controller没有配置 page not found or method not supported. 没有扫描到包里面的controller类 <context:component- ...

  3. Spring Mvc Url和参数名称忽略大小写

    在开发过程中Spring Mvc 默认 Url和参数名称都是区分大小写的. URL忽略大小写: @Configuration public class SpringWebConfig extends ...

  4. 在Spring MVC中使用Velocity

    在Spring MVC中使用Velocity – Part 1工程中配置velocity 目的 Spring MVC中结合velocity的配置和操作. 简介 我们要显示一个课程列表,需要如下的 Ja ...

  5. Spring MVC Boot Cloud 技术教程汇总

    转载自 Spring MVC & Boot & Cloud 技术教程汇总 昨天我们发布了Java成神之路上的知识汇总,今天继续. Java成神之路技术整理(长期更新) 以下是Java技 ...

  6. Spring MVC Boot Cloud 技术教程汇总(长期更新)

    昨天我们发布了Java成神之路上的知识汇总,今天继续. Java成神之路技术整理(长期更新) 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ ...

  7. java架构-Spring MVC 与 Servlet

    相信大家都能够在上网上看到Spring MVC的核心类其实就是DispatherServlet,也就是Spring MVC处理请求的核心分发器.其实核心分发器几乎是所有MVC框架设计中的核心概念,像在 ...

  8. Spring MVC表单防重复提交

    转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retent ...

  9. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  10. url上传参 用requestmapping接受_14 个 Spring MVC 顶级技巧,随时用随时爽,一直用一直爽...

    (给ImportNew加星标,提高Java技能) 转自:失控的狗蛋~ 链接:blog.csdn.net/Summer_Lyf/article/details/102911215 通常,在Spring ...

最新文章

  1. 一种高效的可变行高列表行定位算法
  2. java restful_Java EE中的RESTful计时器
  3. 达摩院最新AI技术助力天猫双11,提供接近真人的语音交互体验
  4. 路径规划之 A* 算法
  5. 135_Power Query M语言快捷输入之输入法设置自定义短语
  6. 五、集合——3-Set集合
  7. ai电磁组属于什么组_星巴克的“气氛组”究竟是一个什么样的神秘组织?
  8. windows API 菜鸟学习之路(三)
  9. Proxmox VE2.2虚拟化安装配置学习笔记(三)
  10. JMX configuration for Tomcat
  11. 可以势利,不可以小人
  12. Using Java in Debian
  13. RS485通讯四路模拟量隔离采样模块的功能特点及应用
  14. vue 数组元素替换_解决vue数组中对象属性变化页面不渲染问题
  15. 济南市公安局交警支队辅警信息管理系统
  16. JPA中could not insert: 的解决办法
  17. 中国Web信息博物馆
  18. 【秃头系列】-【本科生毕设论文格式Word】自动生成论文多级标题并排版正文
  19. 机器人螺栓拆装_一种带电作业机器人专用螺栓拆装固定装置的制作方法
  20. r1音箱原生系统更改服务器,某讯R1音响——版本升级和安装DLNA细致教程

热门文章

  1. Linux的基础常用命令
  2. 第三方视频会议系统对接的疑问解答
  3. Python中的split()函数的用法
  4. C# WinForm 无边框窗体,加阴影、拖动、改变大小等功能完美实现(自认为是完美的 ^=^)
  5. 第一章、ImageMagick7.0使用教程
  6. 人们治疗高血压的五大食疗偏方
  7. linux下迅雷替代方案-linux下载工具
  8. Java开发新闻管理系统(前后端)+爬虫百度、新浪等新闻
  9. 搭建behave-po设计模式-allure报告组合的bdd测试框架,以百度搜索功能为例
  10. Visual Studio关于hook项目的简单使用