@RequestMapping 왜 쓰냐?
- 특정 URL에 메서드를 맵핑 함으로써 유지보수와 가독성 상승
- @RequestMapping이 없으면, 경로를 직접 분기를 경로가 생길 때마다 해줘야 한다
Spring을 사용하면 자주 쓰는 @RequestMapping
왜 쓰는지 알아봅시다
예제 코드
아래 예시에서는 사용자가 /login
을 입력하면 login()
메서드가, /join
을 입력하면 join()
메서드가 호출됩니다.
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String path = sc.nextLine();
// path = "/login" -> uc.login()
// path = "/join" -> uc.join();
UserController uc = new UserController();
if(path.equals("/login")){
uc.login();
}else if(path.equals("/join")){
uc.join();
}
}
}
public class UserController {
public void login(){
System.out.println("login() 호출됨");
}
public void join(){
System.out.println("join() 호출됨");
}
}
위와 같이 코드를 작성할 경우, 몇 가지 어려움이 있습니다
-
새로운 경로 추가의 어려움
- 새로운 경로를 추가하기 위해서는
if-else
구문을 계속 확장해야 합니다. - 이는 코드의 가독성을 저하시키며, 실수의 가능성을 높입니다.
- 새로운 경로를 추가하기 위해서는
-
중복 코드
- 비슷한 동작을 하는 경로가 추가될 경우, 코드의 중복이 발생할 수 있습니다.
- 이는 유지보수를 어렵게 만듭니다.
Request Mapping의 필요성
위와 같은 문제를 해결하기 위해 등장한 개념이 바로 Request Mapping
입니다.
이는 특정 URL에 대한 요청을 특정 메서드와 매핑시키는 역할을 합니다.
스프링 프레임워크에서는 @RequestMapping
어노테이션을 사용해 이를 수행하며, 이는 컨트롤러 클래스 또는 메서드에 적용할 수 있습니다.
예를 들어, UserController
클래스를 다음과 같이 수정할 수 있습니다.
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/login")
public void login() {
System.out.println("login() 호출됨");
}
@RequestMapping("/join")
public void join() {
System.out.println("join() 호출됨");
}
}
이렇게 하면, 스프링 프레임워크가 /login
과 /join
URL 요청을 각각 login()
과 join()
메서드에 자동으로 매핑해줍니다.
이를 통해, if-else
구문을 사용하지 않고도 요청 경로에 따라 적절한 메서드를 호출할 수 있게 됩니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
DispatcherServlet은 어떻게 View와 Controller를 구별할까 (0) | 2023.07.05 |
---|---|
DispatcherServlet 왜 필요한가 (0) | 2023.07.05 |
Spring Security (0) | 2023.07.04 |
Easy Random (0) | 2023.06.02 |
JDBC (0) | 2023.06.02 |