단서해
개발일지
단서해
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Project (5)
    • JAVA (2)
    • Server (11)
      • Info (4)
      • 작동 원리 예상 (4)
      • Question (1)
      • JPA (1)
    • Infra (2)
    • Trouble Shooting (8)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

공지사항

인기 글

태그

  • REQUIRES_NEW
  • enhanced for
  • Reflection
  • 분산락
  • 동시성
  • thymeleaf
  • 무중단 배포
  • @configuration
  • OAuth2.0
  • error
  • pinpoint
  • JPA
  • Java
  • Intellij
  • Spring
  • yml
  • CodeDeploy
  • flutter
  • Github Actions
  • gradlew
  • Lettuce
  • docker
  • Fileter
  • 파일 경로
  • @Component scan
  • 비동기
  • gradle
  • 트랜잭션
  • 성능 개선
  • gradle-wrapper.properties

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
단서해

개발일지

Server/Info

[Spring] @Configuration 을 설정해줘야 하는 이유.

2022. 7. 29. 22:35

스프링으로 프로젝트를 진행하다보면 스프링 컨테이너에 Bean 등록을 위해서

 

새롭게 클래스를 만든 후에 @Configuration 을 추가해주는 것을 볼 수 있다.

 

하지만 Bean 등록은 @Bean 을 추가해주는 것 만으로도 가능하다.

 

그렇다면 어째서 @Configuration 까지 추가해주는 수고를 하는 것 일까?

 

그 이유는 싱글톤 패턴을 위해서 이다.

 

스프링에서는 @Bean 설정만으로는 싱글톤을 보장해주지 않는다.

 

만약 @Configuration 없이 @Bean 만으로 빈 등록을 한다면 아래와 같은 상황이 발생할 수 있다.

@Configuration이 없는 경우.
싱글톤이 깨졌음을 알 수 있다.

 

 

만약 @Configuration 이 설정되어 있다면 바이트 조작을 통해서 싱글톤을 보장해주는 프록시 객체를 만들어

 

스프링 컨테이너에 등록해준다. 

 

@Configuration 설정을 해준 경우.
싱글톤이 유지되고 있다.

 

 

 

 

 

잘못된 내용에 대한 수정이나, 본문에 대한 어떠한 피드백도 환영하니 댓글로 남겨주시면 감사하겠습니다. ㅎ

'Server > Info' 카테고리의 다른 글

Custom Advisor 에 @Transactional 설정시 미적용 문제  (0) 2023.03.20
[Lombok] @Builder 로 객체 생성시, 초기화 안해준 필드 null 값으로 세팅  (0) 2022.11.16
[Spring] Component Scan 범위  (0) 2022.07.29
    'Server/Info' 카테고리의 다른 글
    • Custom Advisor 에 @Transactional 설정시 미적용 문제
    • [Lombok] @Builder 로 객체 생성시, 초기화 안해준 필드 null 값으로 세팅
    • [Spring] Component Scan 범위
    단서해
    단서해

    티스토리툴바