본문 바로가기

WIL(What I Learned)

okky Spring IoC

스프링의 DI 주입 및 IoC 를 알고계신다면 이해가 좀 더 쉽습니다 ^^

 

간단하게 설명드리면 

 

해당 메소드에서 다른 Class 또는 Method 를 호출한다고 가정을 해볼때

 

호출되는 method 가 static이 아니라면 어떻게 호출을 할까요?

 

결국 객체를 new 를 사용해서 새로 만든후에 Class.method 로 호출할 수 밖에 없습니다.

 

여기서 스프링의 IoC 의 개념이 무너집니다. 

 

스프링은 객체를 new 로 만들지 않습니다. 왜냐면 객체의 생성 및 소멸에 대한 권한을 컨테이너에 

 

넘겼기 때문입니다~ 

 

만약 static 을 사용하시려 한다면 의존되는 객체를 static 또는 new 로 만들어야 합니다.

 

그렇게 사용하신다면 굳이 스프링을 사용하실 필요가 없습니다.

 

스프링의 핵심기능인 IoC 를 사용하지 않겠다고 하시게 되는것이니까요~ 

 

** static 으로 만들면 heap 이 아닌 class(method) 영역에  상주시키니까 속도나 

메모리 면에서(접근) 더 빠를수도 있습니다. 그런 경우도 당연히 있지요 

 

하지만 static method 안에서 다른 객체를 new 로 생성한다거나 한다면 해당 method 가

 

호출될때마다 객체가 새로 생성되며, 그 객체에 대한 생성과 소멸을 직접 관리하셔야 합니다.

 

스프링을 이런 객체에 대한 생성과 소멸을 관리해주며,  싱글톤 레지스트리라는 방법을 사용하여

 

객체를 Singleton 과 같이 한번만 생성 하기 때문에  오히려 성능이 더 좋을 수 있습니다. 

 

어떤쪽을 택하시겠습니까?? 

 

https://okky.kr/article/291799

'WIL(What I Learned)' 카테고리의 다른 글

What does the colon (:) operator do?  (0) 2021.08.16
java input (Scanner class)  (0) 2021.08.16
JPA에서 복수의 pk 지정하기  (0) 2021.07.22
Entity에 무작위의 문자열을 id값으로 지정하기  (0) 2021.07.22
TIL  (0) 2021.07.13