둘 다 객체를 만들고 사용할 준비를 한 뒤, 더 이상 필요 없을 때 정리한다는 점은 같아요. 다만 관리하는 주체와 실행 시점이 달라요.
| 단계 | Spring Bean | Unity MonoBehaviour |
|---|---|---|
| 생성 | 생성자 호출 | GameObject·컴포넌트 생성 |
| 초기화 | 의존성 주입 후 @PostConstruct |
Awake() → OnEnable() → Start() |
| 사용 | HTTP 요청, 서비스 호출 등 | 게임 루프에서 Update() 등 실행 |
| 정리 | 컨테이너 종료 시 @PreDestroy |
오브젝트 제거 시 OnDestroy() |
핵심 대응
Spring의 다음 코드는 Unity의 Awake() 또는 Start()와 비슷해요.
@PostConstruct
void prepare() {
// 의존성 주입이 끝난 뒤 초기화
}
void Awake()
{
// 컴포넌트가 생성된 직후
}
void Start()
{
// 활성화된 뒤, 첫 프레임 전에 실행
}
Spring의 @PreDestroy는 Unity의 OnDestroy()와 대응돼요.
@PreDestroy
void cleanup() {
// 스프링 컨테이너 종료 직전 자원 정리
}
void OnDestroy()
{
// GameObject가 파괴될 때 정리
}
가장 큰 차이
- Spring: 애플리케이션 컨테이너가 빈을 관리해요.
- Unity: 씬과 GameObject가 컴포넌트를 관리해요.
- Spring의 기본 빈은 싱글턴이라 앱 전체에서 하나를 공유해요.
- Unity 컴포넌트는 GameObject마다 별도로 존재해요.
- Spring은 일반적으로
Update()같은 반복 생명주기가 없어요.
또한 Spring의 생성자 주입은 Unity의 Awake()에서 다른 컴포넌트를 직접 찾는 것보다 안전한 의존성 관리 방식이라고 볼 수 있어요.
참고로 Unity의 OnDestroy()는 오브젝트를 직접 삭제할 때도 호출되지만, Spring의 @PreDestroy는 컨테이너가 정상 종료될 때 호출된다는 차이가 있어요.
'JAVA Spring Boot' 카테고리의 다른 글
| Spring, DI, Bean, Component 핵심 정리 (0) | 2026.09.21 |
|---|---|
| Java와 C#의 타입과 객체 차이 정리 (0) | 2026.09.01 |