본문 바로가기

Spring

@Service, @Controller, @Repository 과 @Component의 차이는?

@Component를 구현한 @Service, @Repository, @Controller에 대해서 @Component의 차이는 무엇인지 왜 @Component만 사용하면 안되는지 의문점이 생겨 알아보았는데요.

@Repository 

Spring에서 지원하지 않은 Exception을 Spring Exception으로 전환하기 위해서는 @Repository 애노테이션을 사용해야합니다. @Repository 애노테이션이 적용된 메소드에서 Exception이 발생할 경우 UnChecked Exception인 DataAccessException으로 전환시킨다고 합니다. 

ex) 선언적 트랜잭션을 적용한 메소드에서 DB관련된 오류가 발생해도 롤백이 가능한 이유 

 

CheckedException, UnCheckedException 차이

 

  CheckedException UnCheckedException
예외감지 컴파일 시점 런타임 시점
롤백여부 롤백하지 않고 커밋 롤백
Exception 종류 IOException, SQLException OutOfMemoryException

 

@Controller

Spring MVC에서 Controller 애노테이션은 Servlet과 동일한 역할을 하지만 서블릿 위에 구현된 라이브러리입니다.

다양한 기능을 제공하며 대표적인 기능으로는 @RequestMapping 애노테이션을 이용한 여러 handler method 제공입니다.

 

@Service

@Service 애노테이션은 아직까지 @Component와 차이가 없습니다.

 

 

출저