-
흔히 보이는 애노테이션 1탄백엔드 : 서버공부/Spring 2024. 8. 3. 16:24728x90
프로젝트를 진행하면서 빈 등록에 흔히 쓰이는 애노테이션들로는 아래와 같이 크게 4가지가 있다.
`@Service`, `@Controller`, `@Repository`, `@Component`가 있다.
기본적으로 아래와 같이 클래스 최상단에 붙이며 `@ComponentScan`과 `ClassPathBeanDefinitionScanner`이 빈을 스캔하여 등록할 수 있게 해준다.
여기서 빈이란 스프링 컨테이너에서 관리하는 객체로, 이 객체들은 필요할 때 컨테이너로부터 주입받아 사용하게 된다.
기본적으로 `@Service`, `@Repository`, `@Component`는 기능이 비슷하다. 하지만 프로젝트를 진행할 때 각 클래스의 계층에 맞게 붙이는 것이 좋다. 특히 `@Repository`는 데이터 액세스 계층에 특화된 기능(예외 변환)을 제공하기 때문에 DAO를 담당하는 레포지토리 계층에 붙여 주는 것이 좋다.
`@Service`는 서비스 계층에 붙여주게 되는데, 특별한 기능이 없는 `@Component`와는 다르게 스프링이 AOP(Aspect-Oriented Programming) 설정을 적용할 때, 서비스 계층에 적합한 트랜잭션 관리와 같은 부가적인 처리를 지원한다. <AOP는 추후에 알아보도록 하고..>
`@Controller`는 앞서 말한 애노테이션보다 좀 더 특화된 기능을 한다. 스프링에선 HTTP 요청이 들어오면 서블릿 디스패처가 적절한 핸들러를 찾고 그 핸들러에게 요청을 처리시키는데 이때 핸들러로 인식하는 근거가 되는 것이 저 `@Controller` 애노테이션이다.
때문에 핸들러 역할을 하는 컨트롤러 계층에는 해당 애노테이션을 붙여주어야 한다.그러면 `@Component`는 언제 사용할까?
`@Component` 애노테이션도 자주 쓰인다. 프로젝트를 구성할 때 컨트롤러, 서비스, 레포지토리 계층 외에도 서버 파일을 구성하는 요소들이 있다. 예를 들면 토큰 발급을 하는 클래스나 파일을 AWS와 같은 클라우드 서비스에 업로드하는 기능을 하는 서비스나 흔히 “util”이라고 불리는 클래스들은 서비스 계층이나 컨트롤러에 주입되어서 쓰여야 하는데 이때 주입이 되기 위해선 빈으로 등록이 되어야 한다.
때문에 이러한 클래스들을 빈으로 등록하기 위해 `@Component`가 사용된다!'백엔드 : 서버공부 > Spring' 카테고리의 다른 글
Querydsl 로 페이징 처리기능 타입 세이프하게 구현하기 (0) 2024.11.23 SELECT 절 최적화를 통한 API 성능개선 해보기 (0) 2024.08.11 DispatcherServlet 이야기... (0) 2024.08.02 스프링으로 소켓구현 : 세션 관리 (0) 2024.07.15 EC2, REDIS,Docker로 CI/CD 구축하기 (0) 2024.07.10