AOP(Aspect Oriented Programming)는 핵심 비즈니스 로직과 공통 기능(횡단 관심사)을 분리하여 코드의 중복을 줄이고 유지보수성을 높이기 위해 필요하다.
✅ AOP 적용이 필요한 주요 사례
이러한 기능들을 각각의 클래스에서 직접 구현하면 코드 중복이 발생하고 유지보수가 어려워지므로, AOP를 사용하여 공통 로직을 분리할 수 있다.
@Controller
public class HomeController {
@GetMapping("/home")
public String home(Model model) {
model.addAttribute("message", "Hello");
return "home"; // home.html 또는 home.jsp 뷰 반환
}
}
@RestController
public class ApiController {
@GetMapping("/api/message")
public Map<String, String> getMessage() {
Map<String, String> response = new HashMap<>();
response.put("message", "Hello");
return response; // JSON으로 변환되어 반환됨
}
}
✅ @Controller의 요청 처리 흐름
1. 클라이언트가 HTTP 요청을 보냄
2. DispatcherServlet이 요청을 받아 적절한 컨트롤러 메서드를 실행
3. 컨트롤러 메서드가 뷰 이름(String)을 반환하면 ViewResolver가 뷰를 찾음
4. HTML 렌더링 후 응답 반환
✅ @RestController의 요청 처리 흐름
1. 클라이언트가 API 요청(ex: JSON 요청)을 보냄
2, DispatcherServlet이 요청을 받아 컨트롤러 메서드 실행
3. 컨트롤러 메서드의 반환 값이 JSON 또는 XML 데이터로 변환됨
4. HTTP 응답으로 JSON 데이터 전송