[SpringBoot] 02장 스프링 부트3 시작하기
📗 스프링과 스프링부트
📍 스프링 프레임워크
엔터프라이즈 애플리케이션 위한 높은 수준의 서버 성능, 안정성, 보안 제공하는 개발 환경
* 엔터프라이즈 애플리케이션 : 대규모 복잡한 데이터를 관리하는 애플리케이션
📍 스프링 부트
스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있게 만드는 도구
1) WAS가 내장되어 있어 따로 설치할 필요 없이 독립적으로 실행 가능
2) 스프링 부트 스타터와 자동 구성 제공 - 빌드 구성 단순화해 스프링 프로젝트 빠르게 설정. (=의존성 세트)
3) XML 설정 없이 자바 코드로 모두 작성
4) JAR를 이용해 자바 옵션만으로 배포 가능
5) 스프링 액츄에이터 제공 - 애플리케이션 모니터링 및 관리 도구
⭐ 스프링 vs 스프링부트
1) 구성
- 스프링 : 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야 함
- 스프링부트: 수동으로 개발 환경 구성할 필요 X ➝ 스프링 코어, 스프링 MVC 기능 활용
2) 내장 WAS
- 스프링 : WAS에서 배포 (예 : Tomcat)
- 스프링부트: 자체적으로 AWS 파일 갖고 있어 JAR 파일만 만들면 WAS 설정 없이 애플리케이션 실행 (+내장 AWS : 톰캣, 제티, 언더토우)
*WAS : 웹 애플리케이션 실행 위한 장치
3) 그 外 차이점 - 목적, XML 등
📗 스프링 콘셉트 공부하기
📍 DI (의존성 주입)
- 정의 | 외부에서 객체를 주입받아 사용하는 것.
- IoC 구현하기 위해 사용
⇨ 예) @Autowired
: 스프링 컨테이너에 있는 빈을 주입하는 역할. ⇢ 빈: 스프링 컨테이너에서 관리하는 객체
// 객체 주입 예
public class A {
// 스프링 컨테이너 A에서 B를 주입받아 사용
@Autowired
B b;
}
📍 IoC (제어의 역전)
- 정의 | 다른 객체를 직접 생성·제어하는 것이 아니라, 외부에서 관리하는 객체를 가져와 사용
- 객체의 생성, 관리를 프레임워크가 함
// 예제) 스프링 컨테이너가 객체 관리하는 방식
public class A {
private B b; // 객체를 직접 생성하지 않고, 어디선가 받아온 객체를 b에 할당
}
📗 빈과 스프링 컨테이너
📍 스프링 컨테이너
- 빈을 생성하고 관리 ⇨ 빈이 생성되고 소멸되기까지의 생명주기 관리
- Annotation 사용해 빈 주입받을 수 있게 DI 지원
📍 빈
- 정의 | 스프링 컨테이너가 생성하고 관리하는 객체
- 빈의 이름 = 클래스 이름의 첫 글자를 소문자로 바꿔 관리
// 클래스 MyBean 빈으로 등록
@Component
pubilc class MyBean {
}
📗 AOP ; 관점 지향 프로그래밍
📍 AOP
- "관점 지향 프로그래밍 (Aspect Oriented Programming)"
- 정의 | 프로그래밍에 대한 관점을 핵심 관점 / 부가 관점으로 나눠 관심 기준으로 모듈화
- 장점 : 프로그램 변경, 확장에 유연
📗 PSA ; 이식 가능한 서비스 추상화
📍 PSA
- "이식 가능한 서비스 추상화 (Portable Service Abstraction)"
- 정의 | 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스
- 어느 기술을 사용하던 일관된 방식으로 처리하게 하는 것
- 예 : 클라이언트의 매핑과 클래스, 메서드 매핑을 위한 Annotation, WAS
(해당 글 내용은 📗 스프링 부트 3 백엔드 개발자 되기 - 자바 편을 읽고 정리한 내용입니다.)