@Conmponent
- 제네릭 어노테이션이며 모든 클래스에 적용 가능
- 특정 클래스에 Spring Bean을 생성하려는 경우에 사용
- 모든 스테레오타입 어노테이션의 기초
@Component 대시 사용 가능한 어노테이션
@Service : 어노테이션한 클래스에 비즈니스 논리가 있음을 나타냄. 비즈니스 논리가 있는 경우 @Conmponent 대신 사용 가능
@Controller : 웹 어플리케이션과 REST API 에서 컨트롤러를 정의하는데 사용
@Repository : 데이터베이스와 통신, 저장, 검색, 조작 하는 경우 사용
@configuration
- 클래스가 @Bean 메서드를 하나 이상 선언함
- Spring 컨테이너에서 처리하여 Bean 정의를 생성.
- JAVA 설정 파일을 만든다는 것을 의미
- JAVA 설정파일에서는 메서드를 몇개든 정의할 수 있고 이러한 메서드에 @Bean 어노테이션을 추가할 수 있고 메서드로 반환되는 모든 값에 Spring이 Bean을 자동으로 생성
@ComponentScan
- 현재 패키지 뿐만 아니라 하위 패킺니에서도 컴포넌트를 스캔한다
- @Component 클래스가 ComponentScan에 속한다면 Spring Bean이 생성된다
@Primary
- 여러 Bean이 단일값 의존성에 자동 연결될 후보일 때 Bean 에 우선순위를부여해야 함을 나타냄
@PostConstruct
- 의존성 주입이 수행된 이후 초기화를 위해 실행될 메서드를 나타낸다
- 모든 의존성을 Bean에 주입한 후, 초기화 하려는 경우, 모든 의존성이 준비되는 대로 데이터베이스에서 몇 가지 값을 가져오려는 경우에 사용한다
@PreDestroy
- 보통 특정한 Bean에서 보유하고 있는 리소스를 해제하는 데 사용
- 리소스를 해제해야 하거나 정리해야 한다면 @PreDestroy 어노테이션이 붙은 메서드에 구현하는 것이 좋다