@Autowired | 필드, 수정자 주입시 사용 (생성자시에도 사용할수 있지만 단일 생성자일시 필수X) |
@Qualifier | Autowired 주입시 우선순위(1: 클래스타입, 2: Bean 이름) 동일타입시 Bean 이름 명시로 주입 |
@Resource | Resource 주입시 우선순위(1: Bean 이름, 2: 클래스타입) |
@ComponentScan | Bean 패키지 경로 및 클래스 등록범위 설정 (filter를 사용하여 범위 세부설정 가능) |
@Bean | @Configuration 선언된 클래스 메서드 반환형태로 Bean 생성시도 |
@Configuration | @Bean 사용하기위한 클래스에 선언 |
@Lazy | Bean 생성시 지연생성(필자 기준으로 - 단위테스트, 라이브러리 형태로 제공해서 사용안하는 기능은 나중에 생성하는 방식이 더 나은 방법이지 않은가에 대한 판단) |
@Primary | 같은 타입의 Bean 생성시 가장 처음 우선순위로 설정 |
@Order | 같은 타입의 Bean 생성시 우선순위 설정 (List 형태로 받아올시 순서 설정가능) |
@Import | 해당 타입의 Bean만 등록 (필자기준 - 단위테스트, 공통모듈 개발시 사용) |
@Conditional | Bean 생성조건 선언 (해당 어노테이션 사용하여 @Enable*** 구성 가능), 해당 어노테이션으로 파생된 어노테이션 추가 존재(ex - @Conditionalonclass 등등) |
@Scope | Bean 생성 및 파괴 범위(ex: 싱글톤, 프로토타입, 세션, 리퀘스트) / Batch @StepScope, @JobScope 등 batch 전용 스코프도 존재 / (필자기준 - 프로토타입 scope 사용시 @Lookup 사용) |
@Lookup | Bean 생성 파괴 라이프사이클안에서 결국 필드에 저장되는데 싱글톤 객체에 프로토타입 타 빈주입이 불가능 하여 가능하게 하는 어노테이션 (필자기준 - factory class 생성하여 해당 메서드에 선언식으로 factory class bean 주입 받아서 메스드로 호출 생성 / interface default method로도 implement 받은 후 하면 가능하지 않을까 판단) |
@Description | Bean 설명을 나타내는 정보성 어노테이션 |
@Role | Bean 역할 정보성 어노테이션 (3개의 값 -인프라, 어플리케이션, 보조) |