[Spring] Spring의 개념

해당 영상을 보고 정리한 글입니다.

Spring?

1. Spring은 Framework이다.

  • 틀 안에서 동작한다는 뜻. 틀을 벗어나지마!
    • 엉뚱한 오류가 좀 줄어들겠지?

2. Spring은 Open Source이다.

  • 소스 코드가 무료로 공개되어 있어 내부를 쉽게 뜯어 고칠 수 있다!

3. Spring은 IoC Container를 가진다.

Ioc = Inversion of Controll → 제어의 역전...? 무슨 개소리?

  • 주도권이 사용자가 아닌 Spring에게 있다!
  • Class(설계도), Object(실체화가 가능한 것), Instance(실체화한 상태)를 통해 이해할 수 있는데...
    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를 다른 함수에서 다루기 까다롭다.

    ...따라서 Spring이 이를 해결하였다!

    • Object를 전부 읽고 자동으로 heap 메모리에 넣기 때문에
      Instance를 자유롭게 관리할 수 있어 번거롭지 않아졌다.
    • 즉 Spring이 (사용자 대신) 메모리를 관리하는 것이다.

4. Spring은 DI를 지원한다.

💡 DI = Dependency Injection = 의존성 주입

  • 3번의 IoC에서 ... 메모리는 Spring이 관리한다!라고 했었다.
    따라서 heap 메모리에 저장된 것들은 어느 class에서든지 접근이 용이하다....... 이를 DI라고 부른답니다.
  • 결론 : 하나의 object를 여러 곳에서 관리할 수 있는 Singleton 작업이 가능하다.
    • 사실 코틀린은... Singleton이 가능하다. 자바가 안됨ㅋ

좋은 웹페이지 즐겨찾기