[Spring] 스프링부트 개념정리(이론)
스프링의 핵심은 무엇인가?
스프링이란?
- 스프링은 프레임워크이다.
- frame(틀) + work(동작하다) : 틀 안에서 동작한다.
- framework가 나온 이유는 신입 개발자가 마음대로 만들어서 생긴 문제를 해결하기 위해 등장하였고, 틀을 제공해줘서 틀 안에서 만들 수 있게 해줍니다. 그래서 좀 더 좋은 프로그램을 작성할 수 있도록 도와줍니다.
- 스프링은 오픈소스이다.
- 오픈소스(opensource)
- 소스 코드가 공개되어있습니다.
- 스프링 내부 소스코드를 보고 뜯어고칠 수 있습니다.
- 스프링을 사용하면서 불편한 점을 발견하게 되면 기여(contribute)할 수 있습니다.
- 스프링은 IoC 컨테이너를 가진다.
- IoC(Inversion of Control) : 제어의 역전
- 주도권을 스프링에게 뺏기는 것
- 객체(object)를 new를 통해 생성하면 heap 메모리에 올라갑니다.
- 사용자가 직접 객체를 관리했었습니다. 하지만 스프링이 관리하게 됩니다.
- 레퍼런스 주소는 각각의 메서드가 관리합니다.
- IoC(Inversion of Control) : 제어의 역전
public void make() {
의자 s = new 의자();
}
public void use() {
의자 s = new 의자();
}
- 스프링이 객체를 스캔해서(읽어서) heap 메모리에 올려줍니다. 이제 메모리에 올라가 있는 객체는 스프링이 관리합니다.
- 스프링을 통해 객체가 heap 메모리에 한번만 뜨고 그 자료를 모두 공유해서 사용할 수 있게 됩니다. -> 싱글톤
- 스프링은 DI를 지원한다.
- DI(Dependency Injection)
- heap 메모리에 있는 객체들을 모든 클래스로 가져와서 사용할 수 있게합니다.
스프링의 IoC와 DI를 하면 프로그래밍을 편하게 짤 수 있습니다.