의존성 주입 어노테이션
@Autowired
- 필요한 의존 객체의 타입에 맞는 IoC컨테이너 안에 존재하는 Bean을 자동 주입(의존성 주입)
- 방법 3가지 : 생성자 ,setter, 필드
- 의존 객체 찾는 순서 : 1.타입 2.이름 3.@Qualifier 지정 객체 (1,2,3번에 해당 안될시 예외 발생)
@Resource
- @Autowired와 같은 역할
- 자바가 제공하는 어노테이션
- 의존 객체 찾는 순서 : 1.이름 2.타입 3.@Qualifier 지정 객체 (1,2,3번에 해당 안될시 예외 발생)
- name 속성을 생략한 경우, 필드와 동일한 이름을 갖는 빈 주입
@Inject
- @Autowired와 유사, 타입으로 의존성 주입
- 동일한 타입이 둘 이상이면 이름으로 빈 의존성 주입
우선순위 부여 어노테이션
@Qualifier
ex) @Qualifier(value = "bean 객체 이름")
value에 맞는 bean 객체가 존재하지 않으면 Exception 발생
@Named
- @Autowired의 @Qualifier와 같이 사용할 수 있는 것이 @Inject에서는 @Named이다.
스프링 빈(Bean) 등록 어노테이션
@Component
- 개발자가 직접 작성한 Class를 Bean으로 등록하기 위해 사용
ex) @Component(value="spring")
- 추가 정보가 없을 경우 Class의 이름을 Bean id로 사용(맨 앞문자 소문자)
@Controller
- 컨트롤러 클래스를 만들때 사용
- 스프링 설정 파일에 등록된 패키지 안에서만 컨트롤러 검색, 다른 패키지에 컨트롤러 작성시 설정파일에 추가해야 된다.
@Service - DAO 이외의 모든 클래스
- 해당 클래스를 루트 컨테이너에 Bean 객체로 생성해주는 어노테이션
- 부모 어노테이션인 @Component는 가시성이 떨어져 잘 사용하지 않는다.
@Repository - DAO 역할 클래스에 한정
- @Service와 명시적으로 구분하기 위해 각자 분리하여 사용
@Bean
- 메소드 레벨에서 선언
- 개발자가 직접 제어 불가능한 외부 라이브러리를 Bean으로 만들때 사용
- 반환되는 객체를 개발자가 수동으로 빈 등록
@scope- 빈의 범위를 설정
ex) @Scope(value = "prototype")
Bean Scope의 종류
- singleton : IoC 컨테이너당 하나의 빈을 리턴
- prototype : 요구가 있을때마다 새로운 빈을 만들어 리턴
- request : HTTP request 객체당 하나의 빈을 리턴
- session : HTTP session 객체당 하나의 빈을 리턴
- globalSession : 전체 모든 세션에 대해 하나의 빈을 리턴
빈 자동 등록 어노테이션
@ComponentScan
- @Component, streotype(@Service, @Repository, @Controller)
어노테이션이 부여된 Class들을 자동으로 Scan하여 Bean으로 등록해주는 역할
@ComponentScan(basePackages = {"com.config.user1"})
// basePackages : 패키지 경로에 대한 설정
'Backend > Spring' 카테고리의 다른 글
스프링 어노테이션 정리 - AOP 구현, 시점 기반 (0) | 2022.11.13 |
---|---|
스프링 어노테이션 정리 - 환경설정, 값 주입 (0) | 2022.11.13 |
스프링 핵심 개념 - IoC, DI, Model (0) | 2022.11.13 |
스프링 XML 정리 - 네임스페이스(c, p), 의존성 주입 (0) | 2022.11.13 |
스프링 어노테이션 정리 - 컨트롤러, 매핑, 파라미터 주입 (0) | 2022.11.11 |