Spring Framrwork

Spring Framwork의 RequetMapping 정보 추출하기

gregorio 2020. 3. 3. 08:39

Spring Framwork의 Controller에 정의되어 있는 모든 RequestMapping의 정보를 추출이 필요할 때가 있다.

 

이 경우 간단한 Controller를 생성하여 정보를 추출할 수 있다.

 

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

import com.lgcns.spring.base.BaseController;
import com.lgcns.spring.base.BaseMap;



@Controller
public class RequestController extends BaseController{

@Autowired
private RequestMappingHandlerMapping handlerMapping;


@RequestMapping(value = "/endPoint.do", method=RequestMethod.POST)
@ResponseBody
public List getEndPoints(Model model) throws Exception {
List result = new ArrayList();
for (RequestMappingInfo key : handlerMapping.getHandlerMethods().keySet()) {
BaseMap map = new BaseMap();
map.put("name", key.getName());
map.put("path", key.getPatternsCondition());
map.put("methods", key.getMethodsCondition());
map.put("consumes", key.getConsumesCondition());
map.put("produces", key.getProducesCondition());
map.put("params", key.getParamsCondition());
map.put("headers", key.getHeadersCondition());
map.put("custom", key.getCustomCondition());
result.add(map);
}

return result;
}

}

RequestMappingHandlerMapping를 이용하여 Mapping 정보를 추출한 후 Json형식으로 화면에 보여주고 있다.