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

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 시큐리티

빈 설정에 대한 질문입니다.

작성

·

190

0

질문 1

SecurityConfig 파일에서 accessDeniedHandler, affirmativeBased, getAccessDecisionVoters 등 @Bean 으로 등록 하지 않은 것들과 authenticationProvider, AccessDecisionVoter, roleHierarchy 등 @Bean 으로 등록된 것들은 어떤 차이가 있나요?

혹시 @Bean 으로 등록시키는 기준이 있는지 궁금합니다.

 

질문 2

@Service 으로 설정된 SecurityResourceService 를 MethodResourcesMapFactoryBean 에서 @Autowired 로 주입 받지 않은 이유가 있나요??

답변 1

0

정수원님의 프로필 이미지
정수원
지식공유자

질문하신 부분은 특별한 이유가 있어서 그런 것은 아닙니다.

빈으로 정의해야 할 필요가 없다면  Pojo 객체로 생성하는 것이 더 좋을 수 있습니다.

어차피 스프링 시큐리티에서 설정한 모든 객체들은 초기화 때 한번 생성되기 때문에

싱글톤으로 생성되는 빈 객체와 메모리에서 차지하는 크기에는 큰 차이가 없습니다.

다만 빈으로 정의하는 경우는 대부분 DI 기능을 사용하기 위함이기 때문에 만약 DI 기능을 사용해야 할 이유가 없다면 굳이 빈으로 정의할 필요는 없습니다.

결론적으로는 객체생성을 빈으로 하거나 일반객체로 하거나 기능이 동작하는 데는 아무런 차이가 없고 스프링 빈의 편리한 기능을 사용할 것인지에 따라 선택하시면 됩니다.

 

답변 너무 감사합니다!

 

빈으로 정의할 필요가 없다면, POJO 로 구현하는 것이 좋을 수 있다는 것도 이해했고, 

DI 로 의존성을 주입시켜줄 필요가 없다면, 굳이 빈으로 등록할 필요가 없다는 것도 이해했습니다.

 

다만, 현업에서 개발할때, 의존성을 주입 시키면 좋을지 의존성을 주입하지 않고 POJO 객체로 같은 기능을 하는 클래스를 만드는게 좋을지 판단 기준을 선택하는 팁이나 방법이 있나요??

 

혹시 그 기준이 싱글톤으로 관리해야 할지 말지 인가요?

정수원님의 프로필 이미지
정수원
지식공유자

사실 기준이나 팁이 여러 개발 상황이나 환경에 따라 달라지기 때문에 저 개인적으로도 정한 것은 없습니다

다만 빈으로 정의한다는 것은 스프링의 여러가지 편의성 및 라이프사이클에 따라 객체를 운용하기 위함이기 때문에 만약 이러한 이유가 없다면 일반 객체로 생성해서 사용해도 괜찮습니다

이 부분은 여러 자료나 참고할 만한 문서등을 찾아서 익혀 나가시면 될 것 같습니다

 

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기