반응형
@Autowired
: 주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입
필드, 생성자, setter에 사용가능
필드와 setter에 사용할 시 반드시 기본 생성자가 있어야 함.
생성자가 한 개일때는 @Autowired 생략 가능하지만 한 개 이상일때는 꼭 붙여서 사용
@Primary
: @Autowired으로 동일한 타입의 여러 빈을 찾게 되는 경우 자동으로 우선적으로 설정 됨.
단, 동일한 클래스 중 한 개만 @Primary를 사용할 수 있음
@Qualifier
: @Primary 와 동일한 기능이지만, @Primary 보다 우선권을 갖짐
필드 주입을 이용하는 경우(생성자가 없어야 함)
@Autowired
@Qualifier("charmander") => @Qualifier("빈이름작성")
private Pokemon pokemon;
생성자 주입을 이용하는 경우 @Qualifier를 매개변수에 작성
@Autowired
public PokemonService(@Qualifier("squirtle")Pokemon pokemon) {
this.pokemon = pokemon;
}
반응형
@Resource ( Java 제공annotation)
: 주입하려고 하는 객체의 이름(id)일 일치하는 객체를 자동으로 주입
필드와 메서드에 사용가능(기본생성자 필요), 생성자에는 불가
@Autowired 은 타입을 이용해서 의존성을 주입한다면, @Resource는 빈 name으로 의존성 주입
@Resource 적용 순서
: 기본적으로 name으로 주입 받음
빈의 이름이 일치하지 않으면 타입으로 주입 받지만, 동일한 타입의 빈이 있는 경우에는 주입 받지 못함.
@Inject (Java 제공annotation)
: 주입하려고 하는 객체의 타입이 일치하는 객체를 자동으로 주입(@Autowired와 유사)
필드, 생성자, setter 주입 가능
필드 주입
@Inject
@Named("pikachu")
private Pokemon pokemon;
생성자 주입
@Inject
@Named("pikachu") 생성자 위와 파라미터에서도 가능
public PokemonService(@Named("pikachu") Pokemon pokemon) {
this.pokemon = pokemon;
}
setter 주입
@Inject
public void setPokemon(@Named("pikachu")Pokemon pokemon) {
this.pokemon = pokemon;
}
public void pokemonAtteck() {
pokemon.attack();
}
}
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
10 Spring : properties 사용 (1) | 2022.09.02 |
---|---|
09 Spring : @Scope("prototype") (0) | 2022.09.01 |
07 Spring : Annotation 을 통해 의존성 주입하기/ @Autowired (0) | 2022.09.01 |
06 Spring : Setter 메소드 / 생성자를 통한 의존성 주입 방법 (0) | 2022.09.01 |
05 Spring : DI(의존성 주입) (0) | 2022.09.01 |