본문 바로가기
JAVA Spring Boot

Spring 빈 생명주기와 Unity 생명주기 비교

by 롤다 2026. 9. 15.

둘 다 객체를 만들고 사용할 준비를 한 뒤, 더 이상 필요 없을 때 정리한다는 점은 같아요. 다만 관리하는 주체와 실행 시점이 달라요.

단계 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