🍃 Spring

@Component 계열 어노테이션 [ @Component | @Repository | @Service | @Controller ]

보배 진 2026. 1. 14. 15:20

🔹 컴포넌트화 한 줄 정의

컴포넌트화란
프로그램을 역할별로 나누고,
각 역할을 독립적인 부품(컴포넌트)으로 만들어
스프링이 관리하도록 하는 것

 

 

 

[ 패키지 별 기능 ]

com.example.biz.board ➡ DTO와 Service인터페이스는 안바뀌는 코드라 따로 만들고

com.example.biz.board.impl ➡  실존하는 것들, 실질적으로 동작할 애들을 넣어둔 것이다

 

 

 


 

🌷 <context:component-scan>

<context:component-scan base-package="com.example.biz"/>

< context:component-scan>은 지정한 패키지 하위의
@Component 계열 어노테이션이 붙은 클래스를 자동으로
스프링 빈으로 등록하는 설정이다.

 

 

🌷🌷 @Component 의 하위 어노테이션 

@Repository [ DAO ]

데이터베이스(DB) 접근을 담당하는 DAO클래스를 스프링 빈(Bean)으로 등록하기 위한 어노테이션이다

@Component와 같은 역할을 한다 메모리 정리를 Spring이 더 잘 할 수 있어서 사용한다

@Repository가 달려있으면 DAO 역할을 한다

 

역할

1) DAO 계층임을 명확히 표현

▪ 이 클래스는 DB 전용 클래스다 라는 의미

▪ 협업 / 유지보수 / 설계에서 매우 중요

 

2) 컴포넌트 스캔 대상

▪ @Component의 하위 어노테이션

▪ <context:component-scan>에 의해 자동 Bean 등록

 

@Service [ Controller ]

비즈니스 로직을 담당하는 클래스임을 스프링에세 알려주는 어노테이션이다

이게 컨트롤러 파트라는 것을 명확히 보여준다

Service는 인터페이스로 되어 있다

 

역할

1) 비즈니스 로직 계층 표시

▪ 이 클래스는 업무 처리 담당이다 라는 의미

▪ DAO를 직접 쓰지 않고 Service가 중간에서 조율

 

2) 컴포넌트 스캔 대상

▪ @Component의 하위 어노테이션

▪ <context:component-scan>으로 자동 Bean 등록

 

 

 

구분 @Component @Service @Repository
계층 공용 비즈니스 데이터 접근
의미 일반 업무 로직 DB 처리
자동 Bean 등록 O O O
트랜잭션 ⭕ (주로)
예외 변환