Adapter패턴은 서로 호환되지 않는 두 클래스를 호환되도록 만들어준다.
client -----depends on ----> target
............................................................^
............................................................|
............................................................|
............................................................implemets
............................................................|
............................................................|
............................................................|
adaptee<-----------------adapter
스프링 MVC가 지원하는 컨트롤러는 4가지이다.
각 컨트롤러를 DispatchServelt에 연결해주는 어댑터가 하나씩 있어야하므로, 핸들러 어댑터도 4개이다.
SimpleServeletHandlerAdapter를 제외한 3개의 핸들러 어댑터는 DispatchServelet에 디폴트 전략으로 설정되어있다.
AnnotationMethodHandlerAdapter 를 사용할 것임
컨트롤러의 타입이 정해져있지 않음
다른 핸들러 어댑터는 특정 인터페이스를 구현한 컨트롤러만 지원한다.
어노테이션메소드핸들러어댑터는 컨트롤러 타입에는 제한이 없다. 대신 클래스와 메소드에 붙은
몇 가지 어노테이션의 정보와 메소드 이름, 파라미터, 리턴타입에 대한 규칙등을 종합적으로 분석해서
컨트롤러를 선별하고 호출하는 방식을 결정한다.
컨트롤러 하나가 하나 이상의 URL에 매핑될 수 있다. 컨트롤러는 특정 인터페이스를 구현하면 그 인터페이스의 대표 메소드를 통해 컨트롤러가 호출되기 때문에, 특별한 확장 기능을 사용하는 경우를 제외하면 URL당 하나의 컨트롤러가 매핑되는 구조이다.
AnnotationMethodHandlerAdapter는 DefaultAnnotationHandlerMapping 핸들러 매핑과 함께 사용해야한다. 두가지 모두 동일한 어노테이션을 사용하기 때문이다.
규칙을 알고 제대로 사용해야함.
--------> 이것을 사용하려고 했는데 아예 어댑터 패턴을 사용해서 직접 썼음
<버그레포팅 부분>
https://velog.io/@cokkum113/%EB%8B%A8%EC%9D%BC-%EC%B1%85%EC%9E%84-%EC%9B%90%EC%B9%99