[springboot] 스프링 실행시 메모리
스프링 실행시 메모리
스프링 실행되기전 메모리 로딩 정리(IoC)
- 스프링 -> IoC(제어의 역전) : 너가 new해서 메모리에 띄우지만 내가 new해서 메모리에 띄울게
- 여기서 나는
스프링
너는개발자
- 왜?
- 싱글톤 패턴을 사용하고싶다!
- 레퍼런스 변수를 스프링이 관리하겠다.
- ex
- test 클래스를 가지고있다. –> hello라는 메소드에서 A 클래스를 a를 선언할때
- new라는 것은 heap라는 공간을 만드는 것 –> 그공간을 a로 가르키겠다는 것임 (이것을 지역변수임 : hello 라는 메소드 내부에 변수를 선언했기때문에 —> hello라는 메소드를 호출할때 메모리에 뜨고 호출이 종료될때 메모리에서 사라짐) —> 스택에서 객체를 만들어야돼(메소드를 “스택”이라고함) –> 즉 다른 클래스에서 공유할수 없어 —> 너가 new하면 관리하기 힘드니까(계속만들어서 사용할꺼지?) –> 내가 관리하겠다(스프링 컨테이너를 통해서 = IoC제어의 역전임 : 스프링이 초반에
컴퍼넌트 스캔
을 통해서 필요한 것들을 메모리에 로드시켜(IoC라고 SingleTon 패턴으로 —> 이것의 기준이 com.cos.blog 패키지 이하만 스캔을 합니다. 그래서 만약 새로 선언안해주면 도메인 이하로 만들어 줘야한다(ex : com.cos.blog.controller, com.cos.blog.resource….)))
- 여기서 나는
- 어노테이션을 이용한 로드
- ex @Controller
- 스프링이 com.cos.blog 패키지 이하를 스캔해서 모든 파일을 메모리에 new해주는 것이아니라 특정 어노테이션이 붙어있는 클래스 파일들을 new해서(IoC) 스프링컨테이너에 관리해줍니다.
참고
https://www.youtube.com/playlist?list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm