Spring @Repository, @Service 어노테이션

박병주·2023년 1월 18일
0

Spring

목록 보기
2/6

@Contoller 어노테이션을 붙이면 핸들러가 스캔할 수 있는 빈(Bean) 객체가 되어 서블릿용 컨테이너에 생성된다. 마찬가지로 @Repository, @service 어노테이션은 해당 클래스를 루트 컨테이너에 빈(Bean) 객체로 생성해주는 어노테이션이다.

둘 다 Bean 객체를 생성해주고 딱히 다른 기능을 넣어주는게 아니라서 뭘 써도 상관 없지만 명시적으로 구분해주기 위해 각자 분리해서 사용한다.

부모 어노테이션인 @Component를 붙여줘도 똑같이 루트 컨테이너에 생성되지만 가시성이 떨어지기 때문에 잘 사용하지 않는다.

참고로 객체 내에서 데이터 변경 작업이 있는 VO(DTO) 객체와 같은 경우는 동기화 문제로 인해 Bean 객체로 사용하지 않는다. Bean 객체는 항상 데이터 변경이 없는 객체에 한해 사용하는 점에 유의해야 합니다.

@Controller

  • 컨트롤러 (프레젠테이션 레이어, 웹 요청과 응답을 처리함)

@Service

  • 로직 처리 (서비스 레이어, 내부에서 자바 로직을 처리함)

@Repository

  • 외부I/O 처리 (퍼시스턴스 레이어, DB나 파일같은 외부 I/O 작업을 처리함)

refer : https://codevang.tistory.com/258

profile
Developer

0개의 댓글