기본 콘텐츠로 건너뛰기

라벨이 AOP인 게시물 표시

Spring 스테레오타입 애너테이션 차이: Component, Controller, Service, Repository를 언제 써야 할까

Spring 스테레오타입 애너테이션 차이: Component, Controller, Service, Repository를 언제 써야 할까 빠른 답 @Service , @Controller , @Repository 는 모두 @Component 기반이지만 계층 의미와 일부 런타임 동작이 다르다. Spring 6 이상, 현재 Spring Framework 7 기준에서는 @RequestMapping 만 붙은 @Component 가 MVC 핸들러로 등록되지 않는다. @Repository 는 데이터 접근 예외를 Spring의 DataAccessException 계층으로 변환하는 흐름과 연결된다. 계층별 애너테이션은 요청 처리, 트랜잭션, AOP, 테스트 범위를 읽는 기준이 된다. 목차 한눈에 비교 시간 흐름으로 이해하기 왜 모두 Bean인데 다르게 쓰는가 현재 버전 기준으로 달라진 부분 요청부터 응답까지의 코드 구조 설정과 디버깅 단서 계층별로 잘못 섞이기 쉬운 지점 공식 문서에서 확인할 지점 한눈에 비교 Bean 등록 네 애너테이션 모두 컴포넌트 스캔 대상이 될 수 있다. @Controller , @Service , @Repository 가 @Component 의 구체화된 스테레오타입이기 때문이다. 역할 표현 @Component 는 일반 Bean, @Controller 는 웹 요청 처리, @Service 는 비즈니스 흐름, @Repository 는 데이터 접근 계층을 나타낸다. 요청 매핑 현재 Spring MVC에서는 타입 레벨에 @Controller 또는 이를 포함한 @RestController 가 있어야 핸들러 후보로 인식된다. 예외 변환 @Repository 는 영속성 기술별 예외를 Spring의 데이터 접근 예외 계층으로 바꾸는 후처리와 맞물린다. 운영 단서 Actuator mappings, AOP 포인트컷, 슬라이스 테스트에서 계층별 애너테이션은 분류 기준으로 쓰인다. 네 애너테이션의 차이는 “Bean이 되느냐”만 보면 작아 보인다. 하지...