Stereo Type이란?

  • 스프링 컨테이너가 스프링 관리 컴포넌트로 식별하게 해주는 단순한 마커다. 즉 scan-auto-detection과 dependency injection을 사용하기 위해서 사용되는 가장 기본 어노테이션이다.
  • Stereo Type이 범용적으로 많이 사용하게 된 시기는 Spring 2.5부터였다. 그 이전까지는 xml파일에 bean을 등록하여 관리하였다.

그러나 모든 bean들을 xml 파일로 관리하다보니 다른 보일러플레이트 코드와 함께 xml 파일만 비대해지게 될 뿐이었다.

그래서 Spring 2.0에서는 @Repository가 등작하였고, Spring 2.5부터는 @Component, @Controller, @Service, @Configuration등이 등작하면서 Stereo type에 대한 정의가 범용적으로 사용하게 되었다.

@Component

  • 빈으로 간주되어 DI 컨테이너에서 사용할 수 있게 하는 기본 어노테이션이다,.

@Bean과 @Component는 어떤 차이가 있는가?

  • @Component는 클래스 상단에 적으며 그 default로 클래스 이름이 bean의 이름이 된다. 또한 spring에서 자동으로 찾고(@ComponentScan) 관리해주는 bean이다.
  • @Bean은 @Configuration으로 선언된 클래스 내에 있는 메서드를 정의할 때 사용한다. 이 메서드가 반환하는 객체가 bean이 되며 default로 메서드 이름이 bean의 이름이 된다.

@RestController와 @Controller의 차이는?

  • @RestController는 Spring 3.0 에서 추가된 어노테이션으로 RESTful web service를 제공하기 위해 @Controller를 확장한 개념이다. 기능적인 측면에서 보았을 땐 @Controller에 @ResponseBody 어노테이션을 추가된 기능이라고 보면 된다.
  • @ResponseBody 어노테이션의 기능은 결과값을 View를 통해서 출력되지 않고 HTTP Response Body에 직접 쓰여지게 되며 이때 리턴되는 데이터 타입에 따라 MessageConverter 에서 변환이 이뤄진 후 쓰여지게 된다.

@Service

  • Service annotation은 단순히 서비스 레이어에서 사용하는 bean이라는 것을 구분하기 위한 용도로 정의한다. 그러므로 @Component로 대체해도 무방하지만 권장하지는 않는다.

@Repository

  • 검사 되지 않은 예외(DAO 메소드에서 발생)를 Spring DataAccessException으로 변환 할 수 있게 해준다.

@Configuration

  • 한 개 이상의 @Bean 어노테이션으로 정의한 bean 들을 생성하려 할 때 클래스에 정의하는 어노테이션이다.

'Computer science > Spring' 카테고리의 다른 글

AOP  (0) 2023.06.22
Spring Security  (0) 2023.06.21
@Controlleradvice,@ExceptionHandler  (0) 2023.06.21
@Transactional  (0) 2023.06.15
영속성 컨텍스트  (0) 2023.06.15

+ Recent posts