Spring Framework에서 사용되는 @Component, @Controller, @Service, @Repository는 모두 스프링 컨테이너에서 관리되는 빈(Bean)으로 등록하기 위한 스테레오타입 애너테이션입니다. 각 애너테이션은 개발자의 의도를 나타내고, 해당 클래스의 역할에 따라 더 명확한 의미를 제공합니다.
@Component
public class UtilityService {
public String process(String input) {
return input.toUpperCase();
}
}
@Controller
public class HomeController {
@GetMapping("/home")
public String home() {
return "home"; // home.jsp 또는 home.html 렌더링
}
}
@Service
public class OrderService {
public void processOrder(String orderId) {
// 비즈니스 로직 처리
}
}
@Repository
public class UserRepository {
public User findById(Long id) {
// 데이터베이스에서 사용자 조회
}
}
애너테이션 | 역할 | 계층 | 추가 역할 |
---|---|---|---|
@Component | 범용적인 빈으로 사용 | 모든 계층 | 빈 등록 |
@Controller | HTTP 요청/응답 처리 | 웹 계층 | URL 매핑 및 뷰 반환 |
@Service | 비즈니스 로직 처리 | 서비스 계층 | 비즈니스 로직 표현, 가독성 향상 |
@Repository | 데이터베이스 접근 | 데이터 계층 | 데이터 액세스 예외 변환(DataAccessException) |