반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

@Configuration과 @proxyBeanMethods 본문

토비의 스프링 부트 - 이해와 원리/섹션7 - 자동 구성 기반 애플리케이션

@Configuration과 @proxyBeanMethods

DOGvelopers 2024. 10. 9. 19:51
반응형

요약 및 핵심 개념

@Configuration 애노테이션과 ProxyBeanMethods 설정이 스프링에서 어떻게 동작하는지에 대해 학습하고, 자동 구성 시 프록시 적용 여부가 애플리케이션에 미치는 영향을 다뤘습니다.

핵심 내용

  1. @Configuration 애노테이션의 특징:

    • @Configuration이 붙은 클래스는 기본적으로 프록시 패턴을 사용하여 스프링 빈을 관리. 이는 빈 메서드 호출 시 동일한 객체를 반환하기 위함.
    • 기본값으로 ProxyBeanMethods=true 설정 시, 프록시를 통해 빈을 생성하고, 공유된 객체를 반환.
    • ProxyBeanMethods=false로 설정하면, 프록시를 생성하지 않고 빈 메서드를 직접 호출. 공유되지 않는 서로 다른 객체가 생성됨.
  2. 프록시의 동작 방식:

    • @Configuration 클래스가 스프링 컨테이너에 등록될 때 프록시 객체가 생성되고, 이 프록시 객체가 빈으로 사용됨.
    • 빈 메서드 호출 시 프록시 객체가 빈을 캐싱하고, 이미 생성된 빈이 있으면 이를 반환하여 싱글톤 패턴을 구현.
    • 직접 프록시를 구현해 스프링의 동작 방식을 흉내내며, 프록시가 내부적으로 캐싱을 통해 객체 생성을 제어함을 이해.
  3. ProxyBeanMethods 설정의 차이점:

    • ProxyBeanMethods=true일 때: 프록시 객체가 메서드 호출을 가로채어 싱글톤 객체를 보장.
    • ProxyBeanMethods=false일 때: 각 빈 메서드 호출 시마다 새로운 객체가 생성되며, 빈 간의 의존성을 직접적으로 설정하지 않으면 의도치 않은 결과를 초래할 수 있음.
    • 프록시 생성은 추가적인 비용이 발생하므로, 프록시를 필요로 하지 않는 경우 ProxyBeanMethods=false로 설정하는 것이 성능에 유리할 수 있음.
  4. 스프링 부트와 자동 구성:

    • 스프링 5.2 이후부터는 자동 구성 클래스에 ProxyBeanMethods=false가 기본값으로 사용되는 경우가 많아졌으며, 프록시를 생성하지 않아도 충분히 동작할 수 있는 경우 이를 활용.
    • 스프링 공식 문서에서도 프록시가 필요 없는 상황에서는 ProxyBeanMethods=false로 설정할 것을 권장.

결론

@Configuration 애노테이션의 프록시 동작 원리ProxyBeanMethods 설정에 따른 차이점을 명확히 이해하는 시간을 가졌습니다. 다음 강의에서는 조건에 따른 빈 생성을 다루며, 자동 구성의 하이라이트를 학습할 예정입니다.

반응형
Comments