Section 1. Annotation URL 매핑
1. 기존 Controller
- 기존에 존재하던 IndexController
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fcc171169-a856-4f8c-9f0f-4e865c8c7e54%2Fimage.png)
2. @Controller Annotation 지정
- 기존의 IndexController 객체는 Controller 인터페이스를 implement 했기 때문에 자동으로 Controller import 불가 (제거해야 가능)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F169a7acd-8efc-4453-abca-4d7b68a136c7%2Fimage.png)
3. @RequestMapping Annotation
- RequestMapping Annotation 이용하여 메서드에 url 매핑 설정을 지정함
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F41e64e40-342d-498f-8d3a-e5810059780d%2Fimage.png)
4. annotation-driven 태그
- 사용자의 요청에 맞는 컨트롤러를 매핑하기 위한 xml 내의 태그
- 설정된 RequestMapping 정보를 탐색 및 연결
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F74b02484-e22f-436a-9b26-ae59ef1bad6d%2Fimage.png)
5. @RequestMapping View 페이지 요청
- View 페이지에 대한 정보를 직접 제공하지 않으면 매칭된 url 을 기반으로 View 페이지 자동 요청
- "/index" url 요청 전송 -> 타일즈 Resolver 탐색 -> 기본 Resolver 탐색 (prefix/suffix)
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F9aa01f59-abcd-441d-9bfe-b352f6c2dd4b%2Fimage.png)
6. 정리된 xml 파일
- Annotation 으로 객체 생성 및 DI 를 수행하고 url 매핑 또한 내부 메서드로 수행하므로 관련 코드 제거됨
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F8a5d621f-544c-4b41-b46d-58223ccc3de2%2Fimage.png)
Section 2. Controller 정리
1. 메서드를 통한 URL 매핑
- 전에는 url 매핑이 클래스 자체를 통해서 이루어졌지만 이제 클래스 내부의 메서드를 통해 매핑 (여러개의 메서드로 여러 매핑을 설정할 수 있음)
- Controller 클래스를 하나의 메서드 컨테이너(폴더) 느낌으로 생성하고 그 안에 메서드를 통해 url 매핑
2. Notice 관련 Controller 정리
- URL 매핑을 수행했던 공지사항 관련 컨트롤러들을 제거
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fbcacb350-cc2d-4b64-983f-ba2c9481b99e%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-08-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%208.59.13.png)
- 하나의 NoticeController 클래스 메서드로 url 매핑을 구현
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Fa3dab92d-5a9f-4880-bd77-dbd417f6d55e%2Fimage.png)
// View 페이지에 대한 정보를 넘기기 위해서 String 타입으로 반환
// 아래와 같은 코드 역할을 수행한다고 생각하면 됨
ModelAndView mv = new ModelAndView("root.index");
return mv;
3. 중복된 URL 부분
- "/customer/notice" 부분은 중복되는 부분이므로 해당 컨트롤러 내의 url 매핑은 모두 "/customer/notice/" 로 시작되는 것으로 지정 가능
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2F9f43d0ef-bf20-452a-b327-b7b0e19512fe%2Fimage.png)
- root 부분은 아래처럼 변경하면 됨
![](https://velog.velcdn.com/images%2Fcodren%2Fpost%2Ff430b75d-1f3a-46e9-84d9-5927c8120781%2Fimage.png)