Spring(STS)

01. 스프링 컨트롤러를 만드는 이유

Y25N 2023. 8. 6. 17:56
728x90

스프링 -> IoC -> 제어의 역전

제어의 역전? 개발자가 new 하는 것이 아닌 스프링 자체에서 new로 객체를 만들어주는 것.

 

싱글톤 패턴 + 레퍼런스 변수를 스프링이 관리해주는 것

ex)

test class
void hello() {

//class A를 new로 객체 생성

 

class A -> new를 하게 된다면? 

A a = new A();

-> a 클래스를 heap이라는 공간에 띄울 수 있어짐. 

-> a = 지역변수 -> hello라는 메소드 내부에 a를 띄웠기 때문. hello 메소드를 호출할 때 메모리에 떴다가

호출이 종료되면 메모리에서 사라짐. 즉, 어떤 변수를 선언해도 hello가 선언되기 전에는 a라는 변수가 없는 것.

 

stack에서 객체를 만들어야 됨 (stack: 메소드 내부). 스택에서 만든 모든 객체는 지역변수가 관리 -> 지역변수는 다른 스택에서 공유해서 사용할 수 없음. 따라서 이처럼 개발자가 new를 해서 객체를 만들어서 사용하면 heap이 메모리를 차지하고 관리가 어려워지기 때문에 스프링 컨테이너에서 직접 관리 해줌. - IoC컨테이너

 

제어의 역전 -> 스프링이 초반에 컴포넌트 스캔을 함

-> 패키지 이하를 모두 스캔해 필요한 것들을 메모리에 로드(IoC)해 싱글톤으로 관리함

-> 스프링 컨테이너 내에는 모든 로드된 것들. (ex: com.example.java 패키지 아래에 만들어진 패키지들 내부 파일들)