Spring @RequestMapping定义多数组属性实现可映射多个URL地址
Spring支持同一段代码映射多个地址:
源代码
通过源代码了解到其定义里面都是数组方式,故支持多个:请求方式、请求路径、参数等。
package org.springframework.web.bind.annotation;
import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping
{
String[] value() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
示例代码
package com.boonya.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.boonya.cache.GSMMCacheManager;
/**
*
* @function 功能:代办事项控制器
* @author PJL
* @package com.forestar.controller
* @filename DbsxController.java
* @time 2019 2019年9月30日 下午2:19:36
*/
@Controller
@RequestMapping("/dbsx")
@SessionAttributes({ "userjson", "user" })
public class DbsxController extends BaseController {
/**
* 获取代办各类事项统计(*.web地址CAS非登录接口)
*
* @param req
* @param res
* @return
*/
@RequestMapping({"/getStatistics.do","/getStatistics.web"})
@ResponseBody
public Map<String, Object> getStatistics(HttpServletRequest req,
HttpServletResponse res) {
Map<String, Object> data = new HashMap<String, Object>();
data.put("result", "success");
data.put("data",
GSMMCacheManager.getModeByCache(GSMMCacheManager.dbtjModel));
return data;
}
/**
* 获取代办各类事项统计CAS非登录接口
*
* @param req
* @param res
* @return
*//*
@RequestMapping("/getStatistics.web")
@ResponseBody
public Map<String, Object> getStatisticsWeb(HttpServletRequest req,
HttpServletResponse res) {
Map<String, Object> data = new HashMap<String, Object>();
data.put("result", "success");
data.put("data",
GSMMCacheManager.getModeByCache(GSMMCacheManager.dbtjModel));
return data;
}*/
}
注:只有了解源码的实现才能根据具体的需求合理地使用方法优化代码。
纸上得来终觉浅,绝知此事要躬行。