일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Ubunt
- JDBC TEMPLATE
- spring aop
- SpringJDBC
- spring
- @AspectJ
- Di
- @test
- 리눅스
- Spring Boot
- spring framework
- Linux
- 마이바티스
- pointcut
- Spring JDBC
- AOP
- myBatis
- unix
- STS
- java
- 프로퍼티
- XML
- Dependency Injection
- @Spring-Test
- @JUnit
- 컨테이너
- Framework
- POJO
- java spring
- JdbcTemplate
Archives
- Today
- Total
개키우는개발자 : )
@Configuration과 @proxyBeanMethods 본문
토비의 스프링 부트 - 이해와 원리/섹션7 - 자동 구성 기반 애플리케이션
@Configuration과 @proxyBeanMethods
DOGvelopers 2024. 10. 9. 19:51반응형
요약 및 핵심 개념
@Configuration
애노테이션과 ProxyBeanMethods
설정이 스프링에서 어떻게 동작하는지에 대해 학습하고, 자동 구성 시 프록시 적용 여부가 애플리케이션에 미치는 영향을 다뤘습니다.
핵심 내용
@Configuration
애노테이션의 특징:@Configuration
이 붙은 클래스는 기본적으로 프록시 패턴을 사용하여 스프링 빈을 관리. 이는 빈 메서드 호출 시 동일한 객체를 반환하기 위함.- 기본값으로
ProxyBeanMethods=true
설정 시, 프록시를 통해 빈을 생성하고, 공유된 객체를 반환. ProxyBeanMethods=false
로 설정하면, 프록시를 생성하지 않고 빈 메서드를 직접 호출. 공유되지 않는 서로 다른 객체가 생성됨.
프록시의 동작 방식:
@Configuration
클래스가 스프링 컨테이너에 등록될 때 프록시 객체가 생성되고, 이 프록시 객체가 빈으로 사용됨.- 빈 메서드 호출 시 프록시 객체가 빈을 캐싱하고, 이미 생성된 빈이 있으면 이를 반환하여 싱글톤 패턴을 구현.
- 직접 프록시를 구현해 스프링의 동작 방식을 흉내내며, 프록시가 내부적으로 캐싱을 통해 객체 생성을 제어함을 이해.
ProxyBeanMethods
설정의 차이점:ProxyBeanMethods=true
일 때: 프록시 객체가 메서드 호출을 가로채어 싱글톤 객체를 보장.ProxyBeanMethods=false
일 때: 각 빈 메서드 호출 시마다 새로운 객체가 생성되며, 빈 간의 의존성을 직접적으로 설정하지 않으면 의도치 않은 결과를 초래할 수 있음.- 프록시 생성은 추가적인 비용이 발생하므로, 프록시를 필요로 하지 않는 경우
ProxyBeanMethods=false
로 설정하는 것이 성능에 유리할 수 있음.
스프링 부트와 자동 구성:
- 스프링 5.2 이후부터는 자동 구성 클래스에
ProxyBeanMethods=false
가 기본값으로 사용되는 경우가 많아졌으며, 프록시를 생성하지 않아도 충분히 동작할 수 있는 경우 이를 활용. - 스프링 공식 문서에서도 프록시가 필요 없는 상황에서는
ProxyBeanMethods=false
로 설정할 것을 권장.
- 스프링 5.2 이후부터는 자동 구성 클래스에
결론
@Configuration
애노테이션의 프록시 동작 원리와 ProxyBeanMethods
설정에 따른 차이점을 명확히 이해하는 시간을 가졌습니다. 다음 강의에서는 조건에 따른 빈 생성을 다루며, 자동 구성의 하이라이트를 학습할 예정입니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션7 - 자동 구성 기반 애플리케이션' 카테고리의 다른 글
자동 구성 애노테이션 적용 (0) | 2024.10.09 |
---|---|
자동 구성 정보 파일 분리 (0) | 2024.10.09 |
동적인 자동 구성 정보 등록 (0) | 2024.10.09 |
인프라 빈 구성 정보의 분리 (0) | 2024.10.09 |
빈 오브젝트의 역할과 구분 (0) | 2024.10.09 |
Comments