SpringMVC注解的继承问题

SpringMVC中的RequestMapping注解继承问题

示例代码

搞两个Action类,一个父类Action,一个继承了该父类的子类Action

子类:ChildrenAction

@RestController
@RequestMapping("/json/query")
public class ChildrenAction extends ParentAction{
	//重写父类方法
	public ServiceResult queryData(@RequestParam Map<String, Object> paramMap) {
		 System.out.println("这里是子类Action的查询方法");
	}
}

父类:ParentAction

public abstract  class ParentAction{
	
	@RequestMapping(value = "/query-data")
	public ServiceResult queryData(@RequestParam Map<String, Object> paramMap) {
	    try {
	        System.out.println("这里是父类Action的查询方法");
	    } catch (Exception e) {
	        ...
	    }
	}
}
区别和注意点:
  • 两个类有继承关系
  • 父类类名上无注解,子类类名上有@RequestMapping注解
  • 父类方法名上有@RequestMapping注解,子类方法名上无注解
  • 子类重写了父类中的queryData方法,但子类方法上并没有@RequestMapping注解
  • 父类Action是一个抽象类
前台请求路径:
  • Request URL: http://locahost:8080/json/query/query-data 请求
  • Request Method: POST

调用后打印结果

这里是子类Action的查询方法

经过验证后得到结论

@RequestMapping是可以被继承的,此时需要将父类的该方法覆盖(重写该方法),就可以使当前的@RequestMapping生效,此时/query-data注解执行的是子类方法内的逻辑。

即:请求进来后先被路由到ChildrenAction类上(该类有@RequestMapping("/json/query")注解),然后由于子类重写了父类的queryData方法(父类方法上有@RequestMapping("/query-data")注解,符合请求的路径要求),此时SpringMVC的注解继承开始生效,子类成功调用自己的queryData方法

这种方式有利于同一类属性的功能进行自定义

具体的源码解析和原因分析有时间补充吧。。。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值