-
Spring 전체 URL 가져오기JAVA 2020. 5. 12. 10:13반응형
Spring 기반 프로젝트에서 Controller 에 매핑시킨 URL 리스트를 불러오는 예제.
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import com.hailey.Url.service.UrlService; @Controller @RequestMapping("/api/Url") public class UrlController { @Autowired private UrlService service; @Qualifier(value = "handlerMapping") @Autowired private RequestMappingHandlerMapping handlerMapping; @ResponseBody @RequestMapping("/getAllRequestUrl") public List<Map<String, Object>> getAllRequestUrl(HttpServletRequest request) { List<Map<String,Object>> result = new ArrayList<Map<String,Object>>(); // Url 리스트를 Map 형식으로 가져오기 Map<RequestMappingInfo, HandlerMethod> handlerMap = handlerMapping.getHandlerMethods(); Iterator<RequestMappingInfo> it = handlerMap.keySet().iterator(); List<Map<String, Object>> mappingInfoList = new ArrayList<Map<String, Object>>(); RequestMappingInfo requestMappingInfo = null; Set<String> patterns; Object[] sArr; String url, beanName; while(it.hasNext()) { requestMappingInfo = it.next(); patterns = requestMappingInfo.getPatternsCondition().getPatterns(); if(!patterns.isEmpty()) { sArr = patterns.toArray(); if(sArr.length == 1) { // annotaion에 지정된 URL 값 url = (String) sArr[0]; // URL이 지정되어있는 컨트롤러 이름 beanName = (String) handlerMap.get(requestMappingInfo).getBean(); Map<String,Object> map = new HashMap<String,Object>(); map.put("ID", beanName.replace("Controller", "")); map.put("URL", url); mappingInfoList.add(map); } } } return mappingInfoList; } }
프로젝트에서 컨트롤러의 이름을
프로그램IDController
라고 지정한다는 가정하에 ID를 지정한다.반응형'JAVA' 카테고리의 다른 글
이클립스 속도 개선 eclipse.ini / Preference (0) 2021.01.08 Spring 다국어 적용하기 (0) 2020.05.27 Spring DAO DTO 사용하기 (0) 2020.05.12 Spring 커스텀 태그 활용 (0) 2020.05.12