使重复的Spring-MVC的url-mapping具有优先级
需要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具有优先级相关推荐
- Spring MVC 基于URL的拦截和映射规则
转载自 Spring MVC 基于URL的映射规则(注解版) url-pattern 如果看过前一篇入门的帖子,应该了解到spring mvc在启动前必须要在web.xml中配置servlet,这样才 ...
- Spring MVC请求url无效问题思考
一.Controller没有配置 page not found or method not supported. 没有扫描到包里面的controller类 <context:component- ...
- Spring Mvc Url和参数名称忽略大小写
在开发过程中Spring Mvc 默认 Url和参数名称都是区分大小写的. URL忽略大小写: @Configuration public class SpringWebConfig extends ...
- 在Spring MVC中使用Velocity
在Spring MVC中使用Velocity – Part 1工程中配置velocity 目的 Spring MVC中结合velocity的配置和操作. 简介 我们要显示一个课程列表,需要如下的 Ja ...
- Spring MVC Boot Cloud 技术教程汇总
转载自 Spring MVC & Boot & Cloud 技术教程汇总 昨天我们发布了Java成神之路上的知识汇总,今天继续. Java成神之路技术整理(长期更新) 以下是Java技 ...
- Spring MVC Boot Cloud 技术教程汇总(长期更新)
昨天我们发布了Java成神之路上的知识汇总,今天继续. Java成神之路技术整理(长期更新) 以下是Java技术栈微信公众号发布的关于 Spring/ Spring MVC/ Spring Boot/ ...
- java架构-Spring MVC 与 Servlet
相信大家都能够在上网上看到Spring MVC的核心类其实就是DispatherServlet,也就是Spring MVC处理请求的核心分发器.其实核心分发器几乎是所有MVC框架设计中的核心概念,像在 ...
- Spring MVC表单防重复提交
转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retent ...
- java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...
- url上传参 用requestmapping接受_14 个 Spring MVC 顶级技巧,随时用随时爽,一直用一直爽...
(给ImportNew加星标,提高Java技能) 转自:失控的狗蛋~ 链接:blog.csdn.net/Summer_Lyf/article/details/102911215 通常,在Spring ...
最新文章
- 一种高效的可变行高列表行定位算法
- java restful_Java EE中的RESTful计时器
- 达摩院最新AI技术助力天猫双11,提供接近真人的语音交互体验
- 路径规划之 A* 算法
- 135_Power Query M语言快捷输入之输入法设置自定义短语
- 五、集合——3-Set集合
- ai电磁组属于什么组_星巴克的“气氛组”究竟是一个什么样的神秘组织?
- windows API 菜鸟学习之路(三)
- Proxmox VE2.2虚拟化安装配置学习笔记(三)
- JMX configuration for Tomcat
- 可以势利,不可以小人
- Using Java in Debian
- RS485通讯四路模拟量隔离采样模块的功能特点及应用
- vue 数组元素替换_解决vue数组中对象属性变化页面不渲染问题
- 济南市公安局交警支队辅警信息管理系统
- JPA中could not insert: 的解决办法
- 中国Web信息博物馆
- 【秃头系列】-【本科生毕设论文格式Word】自动生成论文多级标题并排版正文
- 机器人螺栓拆装_一种带电作业机器人专用螺栓拆装固定装置的制作方法
- r1音箱原生系统更改服务器,某讯R1音响——版本升级和安装DLNA细致教程
热门文章
- Linux的基础常用命令
- 第三方视频会议系统对接的疑问解答
- Python中的split()函数的用法
- C# WinForm 无边框窗体,加阴影、拖动、改变大小等功能完美实现(自认为是完美的 ^=^)
- 第一章、ImageMagick7.0使用教程
- 人们治疗高血压的五大食疗偏方
- linux下迅雷替代方案-linux下载工具
- Java开发新闻管理系统(前后端)+爬虫百度、新浪等新闻
- 搭建behave-po设计模式-allure报告组合的bdd测试框架,以百度搜索功能为例
- Visual Studio关于hook项目的简单使用