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

박호정님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

애노테이션 @PostConstruct, @PreDestroy

[질문 아님. 질문 많이 하시는 내용 정리] 빈생성과 초기화(라이프사이클)

작성

·

243

·

수정됨

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 아니오
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

빈 생성 -> 초기화 순서에서 빈 생성이 어디까지인지 저를 포함해서 헷갈리는 분들이 많이 계신 거 같습니다. 다른 분들 질문도 많이 있어 정리하여 공유합니다.

중요한 내용은 @Bean 어노테이션이 붙은 함수의 리턴 값이 빈으로 등록되는 것이고 이게 곧 빈 등록 부분입니다. 이해하셨다면 아래는 안 읽으셔도 됩니다.

@Configuration
static class LifeCycleConfig {
    @Bean
    public NetworkClient networkClient() {
        NetworkClient networkClient = new NetworkClient();
        networkClient.setUrl("http://hello-spring.dev");
        return networkClient;
    }
}

해당 코드에서 @Bean 어노테이션이 등록되어 있는데요. 이 코드는 라이프 사이클 중 빈 생성입니다. 초기화랑은 관계가 없습니다.
빈 생성 과정을 구체적으로 보면, 스프링 컨테이너가 빈 이름은 networkClient 으로 networkClient() 호출 결과(return networkClient;)의 객체를 등록하게 됩니다.(객체 참조값이 등록되겠죠)
코드 중간에 setUrl 을 호출해주기 때문에, url은 세팅이 된 상태로 빈 생성이 되어있게 되구요.

이후 초기화(강의 내용 중 @PostConstruct을 포함한 세가지 방법)는 별도의 프로세스로 진행됩니다. 해당 코드와 무관하다는 뜻입니다.

참고차 비슷한 질문도 링크 남겨놓습니다
https://www.inflearn.com/questions/378705

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

박호정님의 질문이 아닌, 스프링 빈 생성과 초기화에 관한 내용 정리에 대해 관련 정보를 제공드리겠습니다.

이해를 돕기 위해, 박호정님이 언급하신 빈 생성과 초기화에 대해 관심이 있으신 분들을 위해 유사한 질문과 답변 링크를 공유합니다. 링크에는 스프링에서의 빈 생성, 초기화 순서, 그리고 이와 연결된 내용을 설명하고 있어 도움이 될 것입니다.

위의 링크에서는 스프링 컨테이너의 생성, 스프링 빈의 생성, 의존관계 주입, 초기화 콜백의 순서와 관련된 구체적인 설명이 있습니다. 특히, 스프링에서 @Bean 어노테이션이 달린 메서드가 어떻게 빈으로 등록되는 과정을 담고 있습니다. 이 과정에서 setUrl 메서드의 호출 시점과 초기화 콜백(@PostConstruct)이 실행되는 시점을 구분해 이해하는 데 도움을 줄 수 있습니다.

박호정님의 내용 정리와 함께, 이 질문은 스프링 빈의 생명주기를 정확히 이해하고자 하는 분들에게 유익한 정보를 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.