작성
·
233
0
저는 FactoryBean인터페이스를 상속하지 않고 @Component로 등록해서, 내부에 resourceMap을 반환하는 메소드를 하나 만들면 된다고 생각했습니다.
FactoryBean을 상속받으면 어떠한 장점이 있어서 구현하신건지 궁금합니다
답변 1
0
네
보시면 알겠지만 resourceMap 자체를 빈으로 만들기 위해서 FactoryBean 을 사용한 것입니다.
일반적으로 Map 을 빈으로 생성하지는 않습니다.
가령 문법적으로 틀린것은 아니지만 이렇게 만들지 않습니다.
@Bean
public Map resourceMap(){
return new HashMap()
}
소스에서는 resourceMap 객체를 빈으로 정의하고 있는데 resourceMap 에는 DB 로 부터 가지고 온 권한정보를 담아야 하기 때문이고 이건 비즈니스 로직으로 구현해야 가능합니다.
그래서 FactoryBean 내부에서 resourceMap 을 만들고 값들을 설정하도록 한 것입니다.
그리고 resourceMap 을 의존성 주입이 되도록 빈으로 만들어서 전역적으로 참조가 가능하게 하기 위함입니다.
만약 resourceMap 을 굳이 의존성 주입 할 필요가 없다면 말씀하신 것 처럼 @Component 를 가진 빈을 만들고 내부에 resourceMap 을 만들어 빈이 아닌 일반 변수처럼 사용해도 상관없습니다.