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

이기정님의 프로필 이미지
이기정

작성한 질문수

스프링 핵심 원리 - 기본편

@Configuration은 없어도 되지 않을까 싶습니다.

작성

·

140

0

@Configuration과 바이트코드 조작의 마법 강의의 후반부(10분 정도) 내용 질문입니다.

싱글톤을 사용하는 이유는 "고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸되는" 상황을 막기 위함인 것 같은데요.

@Configuration은 빼고 @Bean을 냅두면

비록 싱글톤이 깨져서 memberService, orderService, memberRepository가 각기 다 다른 MemoryMemberRepository 인스턴스를 가질지라도,

고객 트래픽이 초당 100이 나와도 아무런 객체가 생성되지 않을 것 같습니다..

AppConfig가 사용되는 순간 3개의 MemoryMemberRepository 인스턴스가 생기더라도

한 번 스프링 빈에 등록되면 MemberApp, OrderApp 등에서는 getBean으로만 인스턴스를 찾게 되니 new 연산도 쓰지 않고 객체가 생기는 일은 없어 보이는데요

 

@Configuration으로 AppConfig를 바이트코드 조작을 하는 수고로움을 더는 대신

그냥 찜찜해도 객체 3개를 사용하면 안되나요?

혹시라도 제가 모르는 또 다른 치명적인 문제가 있는건가요?

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이기정님

생각하신 내용이 맞습니다.

@Configuration은 단지 해당 코드 안에서만 빈의 중복 생성을 막을 뿐입니다. 그래서 실질적인 성능과는 거의 무방합니다.

다만 빈이 두번 생성되면 문제가 되는 경우들이 있습니다. 예를 들어서 객체가 생성될 때 데이터베이스 연결을 만드는 커넥션이 10개 성성된다면? 같은 빈이 2번 생성되면 데이터베이스 커넥션을 20개 사용하게 되겠지요?

이러한 초기화 중복 문제를 해결하기 위해 확실한 싱글톤을 사용하는 것이 중요합니다.

감사합니다.

이기정님의 프로필 이미지
이기정

작성한 질문수

질문하기