인프런 커뮤니티 질문&답변

E mergency님의 프로필 이미지
E mergency

작성한 질문수

스프링 시큐리티

5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2)

UrlResourcesMapFactoryBean을 FactoryBean인터페이스를 상속해서 만드신 이유가 있나요?

작성

·

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 을 만들어 빈이 아닌 일반 변수처럼 사용해도 상관없습니다.

E mergency님의 프로필 이미지
E mergency

작성한 질문수

질문하기