본문 바로가기
Java

[SpringBoot] Controller 에 Route 적용 (RequestMapping)

by bryan.oh 2021. 7. 7.
반응형

SpringBoot
RequestMapping
GetMapping

 

지금까지 method 에 @GetMapping 만 사용했었는데요,

컨트롤러에 따라 Mapping 을 나누어보겠습니다.

시스템이 커지면 관리하기가 수월합니다.

 

기존 소스

@Slf4j
@RestController
public class InfoController {

	private InfoService infoService;
	
	@Autowired
	public InfoController(InfoService infoService) {
		this.infoService = infoService;
	}
	
	@GetMapping("info/project")
	public Object projectInfo() {
		log.debug("start");
		Project project = infoService.getProjectInfo();
		return project;
	}
    
	@GetMapping("info/custom")
	public String customJson() {
		JsonObject jo = new JsonObject();
		
		jo.addProperty("projectName", "preword");
		jo.addProperty("author", "hello-bryan");
		jo.addProperty("createdDate", new Date().toString());
		
		JsonArray ja = new JsonArray();
		for(int i=0; i<5; i++) {
			JsonObject jObj = new JsonObject();
			jObj.addProperty("prop"+i, i);
			ja.add(jObj);
		}
		
		jo.add("follower", ja);
		
		return jo.toString();
	}
}

InfoController 에서 모든 메소드에 @GetMapping 으로 
@GetMapping("info/project")
@GetMapping("info/custom")
과 같이 info 라는 root route 를 추가할 수 있는데, 이렇게 하면 반복되는 코드와 오타의 위험성?이 있기 때문에

class 에 @RequestMapping 이라는 annotation 을 달아줍니다.

 

변경된 소스

@Slf4j
@RestController
@RequestMapping("info")  // <<---- 이거 추가
public class InfoController {

	private InfoService infoService;
	
	@Autowired
	public InfoController(InfoService infoService) {
		this.infoService = infoService;
	}
	
	
	@GetMapping("project")
	public Object projectInfo() {
		log.debug("/info start");
		Project project = infoService.getProjectInfo();
		return project;
	}
    
	@GetMapping("custom")
	public String customJson() {
		JsonObject jo = new JsonObject();
		
		jo.addProperty("projectName", "preword");
		jo.addProperty("author", "hello-bryan");
		jo.addProperty("createdDate", new Date().toString());
		
		JsonArray ja = new JsonArray();
		for(int i=0; i<5; i++) {
			JsonObject jObj = new JsonObject();
			jObj.addProperty("prop"+i, i);
			ja.add(jObj);
		}
		
		jo.add("follower", ja);
		
		return jo.toString();
	}
}

이렇게 class 에 annotation 으로 @RequestMapping 을 달아주면 

이 class 안에있는 @GetMapping 의 상위 route 로 붙습니다.

와~ 깔끔하다~

접근 주소는 달라지지 않았습니다.

  • localhost:8000/info/project
  • localhost:8000/info/custom

 

Spring Boot Tutorial 시리즈

Spring Boot Tutorial 부록

 

728x90
반응형

댓글