▶ 스프링 프레임워크 : 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구
=> 개발자들이 기능 개발에 집중할 수 있게 도와줌
=> 단점 : 설정이 매우 복잡함. -> "스프링부트" 가 이를 해결
▶ 스프링 부트의 주요 특징
1. WAS 를 따로 설치할 필요 없음. => 독립적으로 실행 가능
2. 스프링 부트 스타터(빌드 구성을 단순화 함)를 제공
3. XML 설정 필요 X, 자바 코드로 모두 작성 가능.
4. 자바 옵션만으로도 배포가 가능
5. Spring Actuator(application 의 모니터링 및 관리 도구)를 제공
▶ 스프링 컨셉
1. IoC(Inversion of Control) : 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용 하는 것
2. DI (Dependency Injection) : IoC를 구현하기 위해 사용하는 방법으로, 어떤 클래스가 다른 클래스에 의존한다는 뜻
3. 빈(Bean) : 스프링에서 제공해주는 객체
4. 스프링 컨테이너 :: 빈(Bean)이 생성되고 소멸되기까지의 생명주기를 관리한다.
5. AOP(Aspect Oriented Programming) : 관점 지향 프로그래밍. 프로그래밍에 대한 관점을 핵심 관점, 부가 관점으로 나눠서 관심 기준으로 모듈화 하는 것.
=> 프로그래머가 핵심 관점 코드에만 집중할 수 있게 됌
=> 프로그램의 변경, 확장에 유연하게 대응 가능
6. PSA (Portable Service Abstraction) : 이식 가능한 서비스 추상화
=> 스프링에서 제공하는 다양한 기술들을 추상화하여 개발자가 쉽게 사용하는 인터페이스
▶ 스프링 부트 기본 설정들
1. 스프링 부트 스타터 (spring-boot-starter- " ") : 필요한 기능을 간편하게 설정할 수 있는 의존성이 모여 있는 그룹
ex) spring-bootstarter-web, spring-bootstarter-jdbc, spring-bootstarter-test ...
2.자동 구성(autoconfigure) : 애플리케이션이 최소한의 설정만으로도 실행되게 여러 부분을 자동으로 구성하는 기술
=> spring-boot-autoconfigure\META_INF\spring.factories 에 존재
▶ @SpringBootApplication
1. @SpringBootConfiguration : 스프링 부트 관련 설정을 나타내는 애너테이션
2. @ComponentScan : 사용자가 등록한 빈을 읽고 등록하는 애너테이션
ex) @Component => @Controller => @RestController
3. @EnableAutoConfiguration : 스프링 부트의 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행