Home 객체를 여러개 주입하고 싶을때
Post
Cancel

객체를 여러개 주입하고 싶을때

여러 객체중에 특정 객체만 주입하기

스프링에서 interface를 구현한 객체가 여러개 있는경우 충돌이 발생할수 있다. 이와 같은경우 다음과 같이 해결가능하다.

해결방법

충돌이 나는 클래스 둘중에 하나에 @Primary annotation을 정의한다.

1
2
3
4
5
@Primary
@Component
public class MyBcryptPasswordEncoder implements PasswordEncoder {
    ...
}

위와 같이 정의해놓으면, 단독으로 주입을 할경우 충돌을 해결할수 있다.

여러 객체를 주입하기

1
2
@Autowired
private Map<String, PasswordEncoder> passwordEncoderMap;

위와 같은방법으로 Component로 등록한 여러 클래스들을 주입할수 있다. 이때 Map의 key는 Bean name이 들어간다.(myBcryptPasswordEncoder, …) 그리고 value에는 객체가 주입된다.

이밖에도 Array,List,Set등에도 여러객체가 주입가능하다.

This post is licensed under CC BY 4.0 by the author.

Apache Avro

Batch Stream vs Stream Processing

Comments powered by Disqus.

Trending Tags