[Spring] Spring의 개념
Spring?
1. Spring은 Framework이다.
- 틀 안에서 동작한다는 뜻. 틀을 벗어나지마!
- 엉뚱한 오류가 좀 줄어들겠지?
2. Spring은 Open Source이다.
- 소스 코드가 무료로 공개되어 있어 내부를 쉽게 뜯어 고칠 수 있다!
3. Spring은 IoC Container를 가진다.
❓ Ioc = Inversion of Controll → 제어의 역전...? 무슨 개소리?
- 주도권이 사용자가 아닌 Spring에게 있다!
- Class(설계도), Object(실체화가 가능한 것), Instance(실체화한 상태)를 통해 이해할 수 있는데...
: 위의 코드를 보면, Class는 Computer로 선언이 되어있고 각각의 함수 function1과 function2에서 Instance인 com1을 만들었다.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를 불러왔으므로 com1은 같은 속성을 지닐까?
-> X. 각 함수의 com1은 function1이 종료됐을 때 혹은 function2이 종료됐을 때 heap 메모리에서 각자 사라지는 객체이기 때문이다.
즉 메모리 관리는 함수가 관리하고, 이 함수를 사용자가 관리하므로 주도권은 사용자에게 있는 것이다!
-
문제점 : 하나의 Instance를 다른 함수에서 다루기 까다롭다.
...따라서 Spring이 이를 해결하였다!
- Object를 전부 읽고 자동으로 heap 메모리에 넣기 때문에
Instance를 자유롭게 관리할 수 있어 번거롭지 않아졌다. - 즉 Spring이 (사용자 대신) 메모리를 관리하는 것이다.
- Object를 전부 읽고 자동으로 heap 메모리에 넣기 때문에
4. Spring은 DI를 지원한다.
💡 DI = Dependency Injection = 의존성 주입
- 3번의 IoC에서 ... 메모리는 Spring이 관리한다!라고 했었다.
따라서 heap 메모리에 저장된 것들은 어느 class에서든지 접근이 용이하다....... 이를 DI라고 부른답니다. - 결론 : 하나의 object를 여러 곳에서 관리할 수 있는 Singleton 작업이 가능하다.
- 사실 코틀린은... Singleton이 가능하다. 자바가 안됨ㅋ
Author And Source
이 문제에 관하여([Spring] Spring의 개념), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chodakk/What-is-Spring저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)