[Spring] Static 객체와 Bean의 차이

의문점

프로젝트 진행 중 상수 클래스를 선언할 일이 생겼는데, 메모리에 미리 올려두고 다른 클래스에서 상수를 가져와서 사용하기 위해서 상수 클래스를 static final을 사용해서 구현하였다. 그런데 갑자기 "static도 프로그램 실행 시에 가장 먼저 메모리에 변수를 등록하는 것인데 Bean도 싱글톤 객체로 메모리에 미리 올려두고 사용하는 것이니까 둘 다 똑같지 않은가?"라는 생각이 들었다. static으로 선언하는 것과 spring bean으로 등록하는 것의 차이점이 정확하게 무엇일까?

 

Staic과 Bean의 공통점

  • 공유가 가능하다: Static으로 선언된 객체와 빈으로 등록된 인스턴스 모두 공유 될 수 있는 인스턴스이고 Static 객체는 클래스의 모든 인스턴스가 공유하고 빈은 스프링 컨테이너를 통해 공유 된다.
  • 둘 모두 전역적인 접근이 가능하다
  • 라이프 사이클이 존재한다: 빈은 스프링 컨테이너에 의해 관리되고, Static 객체는 프로그램이 시작되어 끝날 때까지를 라이프사이클로 가진다.

Staic과 Bean의 차이점

  • Static 객체는 다른 객체에 의한 의존성 주입이 불가능하지만 bean은 가능함.
  • Static 객체는 어떤 상태나 동작을 공유하기 위해 사용하고 bean은 객체의 라이프사이클 관리나 의존성 주입, 효율적인 리소스 관리 등을 위해 사용함.
  • Static 객체는 개발자가 직접 선언하고 초기화하지만 bean은 스프링 컨테이너에 의해 관리됨.

'개발 > Spring' 카테고리의 다른 글

[Spring] S3 파일 업로드  (0) 2023.07.22
[Build] Maven, Gradle 빌드  (0) 2023.07.20
[Spring] Filter & Interceptor & AOP  (0) 2023.05.29
[Spring] IoC & DI  (0) 2023.05.24
빌드와 컴파일의 차이  (0) 2023.04.25