빈 범위와 생명주기 관리
Spring이 빈을 생성하고 범위를 지정하고 소멸시키는 방식과 콜백으로 빈의 생명주기에 연결하는 방법을 배웁니다.
빈 범위와 생명주기 관리은(는) CoddyKit의 무료 Spring Boot 4 Complete Guide 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Spring Boot 4 Complete Guide 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Spring Boot 4 Complete Guide 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
What Is a Bean Scope?
A scope defines how many instances of a bean Spring creates and how long they live. The default scope is singleton: one shared instance per container.
Singleton Scope
With singleton, every injection point receives the same object. This is ideal for stateless services and is the most common choice.
@Service
public class PricingService {
// one shared instance across the app
}Prototype Scope
The prototype scope creates a new instance every time the bean is requested. Use it for stateful or short-lived objects.
@Component
@Scope("prototype")
public class ReportBuilder {
}Web-Aware Scopes
In web apps you also have request and session scopes, tying a bean's lifetime to a single HTTP request or a user session respectively.
- request — one per HTTP request
- session — one per user session
Choosing the Right Scope
Default to singleton for stateless logic. Reach for other scopes only when a bean must hold per-request or per-instance state, since wider sharing of mutable state causes bugs.
The Bean Lifecycle
Spring instantiates a bean, injects its dependencies, runs initialization callbacks, serves it during the app's life, and finally runs destruction callbacks on shutdown.
Initialization with @PostConstruct
Annotate a method with @PostConstruct to run setup logic after dependencies are injected, such as opening a connection or warming a cache.
@PostConstruct
public void init() {
System.out.println("Bean is ready");
}Cleanup with @PreDestroy
A @PreDestroy method runs just before the bean is removed, letting you release resources cleanly.
@PreDestroy
public void cleanup() {
System.out.println("Releasing resources");
}Lazy Initialization
By default singletons are created at startup. Marking a bean @Lazy defers creation until it is first needed, which can speed up boot time for rarely used beans.
@Lazy
@Service
public class HeavyService {
}Prototype Beans and Destruction
Be aware that Spring does not manage the full destruction lifecycle of prototype beans. The container hands them off and forgets them, so you must release their resources yourself.
Putting It Together
A typical singleton service uses @PostConstruct to initialize and @PreDestroy to clean up, giving you precise control over startup and shutdown behavior.
@Service
public class CacheService {
@PostConstruct void load() {}
@PreDestroy void flush() {}
}Quick Check
Test your understanding of bean scopes and lifecycle.
Recap
You learned the singleton, prototype, request, and session scopes, the bean lifecycle, and how to hook into it with @PostConstruct, @PreDestroy, and @Lazy.
자주 묻는 질문
“빈 범위와 생명주기 관리” 강의는 무료인가요?
네 — “빈 범위와 생명주기 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Spring Boot 4 Complete Guide 강의 전체를 잠금 해제할 수 있습니다. Spring Boot 4 Complete Guide 강의에는 총 4개의 강의가 포함되어 있습니다.
“빈 범위와 생명주기 관리”에서 뭘 배우나요?
Spring이 빈을 생성하고 범위를 지정하고 소멸시키는 방식과 콜백으로 빈의 생명주기에 연결하는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 Spring Boot 4 Complete Guide을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Spring Boot 4 Complete Guide을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Spring Boot 4 Complete Guide은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“빈 범위와 생명주기 관리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Spring Boot 4 Complete Guide 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Spring Boot 4 Complete Guide 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Spring IoC 컨테이너 이해하기
- 의존성 주입 실습
- 애플리케이션 속성 외부화
- 빈 범위와 생명주기 관리