Spring 反射得到所有controller与method

package com.epkj.spring;

import java.util.Iterator;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Controller
@RequestMapping("/ControllerReflect.do")
public class ControllerReflect {

	
	@ResponseBody
	@RequestMapping(params="method=getUrlMapping")
	public Object getUrlMapping(HttpServletRequest request) {
		WebApplicationContext wc = getWebApplicationContext(request.getSession().getServletContext());
		RequestMappingHandlerMapping rmhp = wc.getBean(RequestMappingHandlerMapping.class);
		Map<RequestMappingInfo, HandlerMethod> map = rmhp.getHandlerMethods();
		for (Iterator<RequestMappingInfo> iterator = map.keySet().iterator(); iterator  
                .hasNext();) {  
			RequestMappingInfo info = iterator.next();
			System.out.print(info.getConsumesCondition());
			System.out.print(info.getCustomCondition());
			System.out.print(info.getHeadersCondition());
			System.out.print(info.getMethodsCondition());
			System.out.print(info.getParamsCondition());
			System.out.print(info.getPatternsCondition());
			System.out.print(info.getProducesCondition());

			System.out.print("===");
			
			HandlerMethod method = map.get(info);
			System.out.print(method.getMethod().getName() + "--");
			System.out.print(method.getMethodAnnotation(RequestMapping.class).params()[0]);
			System.out.println();
		}
		return null;
	}
	
	@RequestMapping(params="method=hello")
	public Object hello() {
		return null;
	}
	
	public WebApplicationContext getWebApplicationContext(ServletContext sc) {
		return WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
	}
}

猜你喜欢

转载自183615215-qq-com.iteye.com/blog/1866281
今日推荐