❓ Ioc = Inversion of Controll → 제어의 역전...? 무슨 개소리?
- 주도권이 사용자가 아닌 Spring에게 있다!
class Computer(var version:String="0.0.0.0", var price:Int=100)
fun function1(){
val com1 = Computer("1.1.1.1", 200)
}
fun function2(){
val com1 = Computer("2.2.2.2", 150)
}
: 위의 코드를 보면, Class는 Computer로 선언이 되어있고 각각의 함수 function1과 function2에서 Instance인 com1을 만들었다.❓ 다른 함수이지만 같은 Class를 불러왔으므로 com1은 같은 속성을 지닐까?
-> X. 각 함수의 com1은 function1이 종료됐을 때 혹은 function2이 종료됐을 때 heap 메모리에서 각자 사라지는 객체이기 때문이다.
즉 메모리 관리는 함수가 관리하고, 이 함수를 사용자가 관리하므로 주도권은 사용자에게 있는 것이다!
문제점 : 하나의 Instance를 다른 함수에서 다루기 까다롭다.
💡 DI = Dependency Injection = 의존성 주입