Spring boot

어노테이션 정리

ryeonng 2024. 8. 8. 12:46

 

  1. @Autowired : 의존성 주입(Dependency Injection)을 수행할 때 사용되며, 필드, 생성자, 메서드에 적용 가능
  2. @Controller : 웹 애플리케이션의 컨트롤러 클래스를 표시한다.
  3. @Service : 비즈니스 로직을 수행하는 서비스 클래스를 표시한다.
  4. @Repository : 데이터 액세스 계층에 사용되는 리포지토리 클래스를 표시한다.
  5. @RestController : RESTful 웹 서비스의 컨트롤러 클래스를 표시한다. @Controller와 @ResponseBody를 함께 사용하는 단축 형태이다.

 

@Configuration과 @Component의 주요 차이점

@Configuration은 스프링 빈을 정의하는 설정 클래스에 붙는 반면, @Component는 단순히 스프링이 관리해야 하는 클래스를 표시할 때 사용된다.

@Configuration은 보통 @Bean 어노테이션과 함께 사용되어 스프링 빈을 생성하는 메소드를 정의하고, 이를 빈으로 등록한다. 반면 @Component는 주로 단순한 POJO클래스에 사용된다.

 

POJOPlain Old Java Object의 약어로, 특정한 제한이나 규약이 없는 일반적인 자바 객체를 가리킨다. 즉, POJO 클래스는 특정 프레임워크나 라이브러리에 종속되지 않고 순수하게 자바로 작성된 클래스를 의미한다.

@Component 어노테이션은 주로 이러한 단순한 POJO 클래스에 사용된다. 예를 들어, 서비스나 레포지토리와 같은 비즈니스 로직이나 데이터 액세스 로직을 수행하는 클래스들은 보통 @Service나 @Repository 어노테이션을 사용하여 스프링 빈으로 등록된다. 하지만 그 외의 일반적인 도메인 모델이나 유틸리티 클래스와 같은 경우에는 특별한 어노테이션 없이도 그 자체로 스프링 빈이 될 수 있다.

따라서 @Component 어노테이션은 이러한 일반적인 클래스를 스프링 빈으로 등록할 때 사용된다. 이렇게 등록된 빈은 스프링 애플리케이션 내에서 주입되거나 사용될 수 있다.