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

[ 패키지 별 기능 ]
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 |
| 트랜잭션 | ❌ | ⭕ (주로) | ❌ |
| 예외 변환 | ❌ | ❌ | ⭕ |
'🍃 Spring' 카테고리의 다른 글
| 복습 겸 스프링 구조 이해해보기 (0) | 2026.01.16 |
|---|---|
| 스프링 컨테이너의 구조 (0) | 2026.01.15 |
| .xml 대신 @ (어노테이션) 사용해보자! (0) | 2026.01.14 |
| 의존성 주입(DI, Dependency Injection)와 생성자 주입, 세터 주입 (0) | 2026.01.14 |
| MySQL 설치하기 ( Workbench 툴 사용 ) (0) | 2026.01.13 |