스프링 객체
- Controller, Service, Dao
- Controller - @Controller
- Service - @Service, @Component
- Dao - @Repository, @Component
- 스프링 객체는 Spring StereoType으로 등록이 가능하다.
의존 객체 주입
- @Autowired
- 주입하려고하는 객체의 데이터 타입을 보고 의존 객체 주입
- 타입 → 이름
- 생성자 / 필드 / setter 레벨에 작성 가능
- 스프링 자체 주석
- required 속성 지원
- @Autowired(required = false) / 기본값 @Autowired(required = true)
- 필드 / setter 레벨 작성 가능
- 의존성을 Optional로 설정
- 의존 객체를 주입받지 못하도 객체를 생성할 수 있다.
1. 특정 Bean 객체를 강제로 지정해주는 어노테이션만 @Qualifier를 사용
@Autowired
@Qualifier("sqlSessionFactory")
private SqlSessionFactory sqlFactory;
2. 만약 Bean 객체가 없을 경우 발생하는 예외를 피하고 싶다면 required 속성값을 false로 해준다.
@Autowired(required=false)
@Qualifier("^__^")
private SqlSessionFactory sqlFactory;
- @Resource
- 주입하려고 하는 객체의 이름을 보고 의존 객체 주입
- 이름 → 타입
- 필드 / setter 레벨에 작성 가능
- 자바 주석 - 특정 프레임워크에 종속 X
- 자바 9 이후로 삭제
@Resource
private SqlSessionFactory sqlFactory;
@Resource(name="sqlSessionFactory")
private SqlSessionFactory sqlFactory;
- @Inject
- 생성자 / 필드 / setter 레벨에 작성 가능
- 타입 → 이름
- 자바 주석 - 특정 프레임워크에 종속 X
1. 하나의 필드에 적용할 때
@Inject
@Named("sqlSessionFactory")
private SqlSessionFactory sqlFactory;
2. setter나 생성자의 파라미터에서 여러 개의 Bean 객체를 주입해준다면 아래와 같이 파라미터 앞에 위치시켜 지정할 수 있다.
@Inject
private @Named("sqlSessionFactory") SqlSessionFactory sqlFactory;
|
|
@Autowired
|
@Resource
|
@Inject
|
|
Package
|
org.springframework.beans.factory.annotation.Autowired
|
javax.annotation.Resource
|
javax.inject.Inject
|
|
Target
|
Field, Setter Method, Constructor
|
Field, Setter Method
|
Field, Setter Method, Constructor
|
|
의존성 주입 순서
|
타입 → 이름
|
이름 → 타입
|
타입 → 이름
|
|
빈 지정 방법
|
1. @Qualifier("빈 이름")
2. @Primary 사용 |
@Resource(name="빈 이름”)
|
1. @Qualifier("빈 이름")
2. @Primary 사용 3. @Named(value="빈 이름") |
|
Nullable
|
required=false 속성 사용
|
X
|
X
|
|
비고
|
SpringFramwork 안에서만 사용 가능
|
Java 9 이후로 삭제
|
특정 프레임워크에 종속적이지 않음
|
'공부 > Spring' 카테고리의 다른 글
| Redis (0) | 2023.06.24 |
|---|---|
| 스프링 패키지 구조 (0) | 2023.06.22 |
| DAO, DTO, VO, Entity (0) | 2023.01.27 |
| Session (0) | 2023.01.16 |
| Spring의 대표적인 Annotation의 역할 (0) | 2023.01.10 |
댓글