패스잇
백엔드 개발 · 기초

@Component, @Service, @Repository, @Controller의 차이점은 무엇인가요?

힌트 · 각 애노테이션의 역할과 계층 구조를 생각해보세요.

역할관점계층책임AOP

모범답안

@Component, @Service, @Repository, @Controller는 모두 Spring 프레임워크에서 빈(Bean)을 등록하기 위해 사용하는 애노테이션입니다. 핵심적인 차이는 각 애노테이션이 나타내는 역할과 관점에 있습니다.

@Component는 가장 일반적인 애노테이션으로, 특정 역할을 명확히 정의하기 어려운 빈에 사용됩니다.

@Service는 비즈니스 로직을 수행하는 클래스에 사용되며, 서비스 계층을 나타냅니다.

@Repository는 데이터 접근 로직을 수행하는 클래스에 사용되며, 데이터베이스와의 상호작용을 담당합니다. 또한, 데이터 접근 예외를 추상화하여 예외 처리의 일관성을 유지하는 데 도움을 줍니다.

@Controller는 웹 요청을 처리하고 응답을 반환하는 클래스에 사용되며, 프레젠테이션 계층을 나타냅니다.

이 애노테이션들은 @Component를 상속받아 만들어졌기 때문에, 빈 등록 기능은 동일하지만, 각 계층의 역할을 명확히 구분하고 AOP(Aspect-Oriented Programming)와 같은 기술을 적용할 때 더욱 효과적으로 사용할 수 있도록 도와줍니다. 즉, 개발자가 코드의 목적과 역할을 더 명확하게 파악할 수 있도록 돕는 역할을 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Java / Spring 면접 질문

← Java / Spring 면접 질문 전체 보기