@RequestMapping(value="url작성", method=RequestMethod.GET) // GET, POST, HEAD, PUT, PATCH, DELETE, OPTIONS, TRACE
책에서는 이 부분을 직접 구현했다
메소드가 이렇게 많은 줄 몰랐다(chatGPT)
GET: 지정된 리소스에서 데이터를 검색합니다.
POST: 처리할 데이터를 지정된 리소스에 제출합니다.
HEAD: 실제 데이터 없이 지정된 리소스의 헤더를 검색합니다.
PUT: 리소스를 업데이트하거나, 지정된 URI에 리소스가 없는 경우 새 리소스를 생성합니다.
PATCH: 리소스에 부분 수정을 적용합니다.
DELETE: 지정된 리소스를 삭제합니다.
OPTIONS: 복귀
자바 리플렉션이란: 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API
자바는 리플렉션 API를 통해 클래스의 private 필드에 접근해 값을 전달할 수 있다.
public String getName() {
return name;
}
@Getter 애노테이션을 사용하자 -> 자동으로 위의 getter 메소드를 생성해준다
@Controller 애노테이션 설정 클래스 스캔
@Controller 애노테이션 설정이 되어 있는 클래스를 reflections을 통해 찾자
@RequestMapping 애노테이션 설정을 활용한 매핑
@RequestMapping 애노테이션 설정을 기반으로 매핑하는 작업
클라이언트 요청에 해당하는 HandlerExecution 반환
클라이언트 요청에 해당하는 HandlerExecution을 조회하는 메소드
DispatcherServlet과 AnnotationHandlerMapping 통합
여태까지 애노테이션 기반으로 컨트롤러 설정이 가능하도록 진행했다
AnnotationHandlerMapping를 활용해 서비스가 가능하도록 통합하는 작업을 진행하자
이로써 애노테이션 기반 MVC 프레임워크 구현을 완료했다
기존 코드인 Controller 인터페이스와 추가된 HandlerExecution 클래스를 보면 인자와 반환 값이 같다 -> 통합 리팩토링이 가능
장점 : 같은 인터페이스를 구현함으로써 캐스팅과 같은 작업이 필요없다 -> 소스코드의 간결함
단점 : 확장성이 떨어진다