Spring
Springboot 이론노트
wlals5855
2024. 10. 15. 17:17
⭐ Spring/SpringBoot이론정리
- 스프링을 사용한 데이터베이스 연결
✔️ build 도구
✅ 빌드 도구의 정의
소스코드에서 애플리케이션 생성을 자동화 하기 위한 프로그램
코드를 사용|실행 가능한 형태로 커파일, 코드 패키징, 코드 패키징, 테스트 실행 등을 포함
✅ 빌드 도구의 종류
Maven VS Gradle
- Maven: 고정적이고 선형적인 단계의 모델을 기반
- Gradle: 작업 의존성 크래프를 기반
- 차이점(Gradle의 특징)
- Maven에 비해 가독성이 높고 설정이 간단
- 빌드와 테스트 속도가 더 빠름
✔️Spring & SpringBoot
- 엔터프라이즈 애플리케이션: 대규모의 복잡한 데이터 관리
> 위의 대비하기 위한 서버 성능, 안정성, 보안을 제공하는 도구 - 스프링
✅ 스프링부트
- 빝드 구성을 단순화하는 그프링 부트 스타터를 제공
- XML 설정을 하지 않고도 자바 코드로 작성이 가능
- JAR를 이용하여 자바 옵션만으로 배포 가능
✅스프링과 스프링부트의 구성 차이
1) 구성의 차이
- 스프링 코어 | 스프링 MVC에 있는 기능을 자동 로드 (수동 환경 구성 x)
2) 내장 WAS의 유무
- 스프링 부트는 WAS를 자체적으로 가짐
- jar 파일만 생성하면 별도로 WS를 설정하지 않아도 애플리케이션 실행이 가능
✅ 제어의 역전
IoC(Inbersion of Control)
- 프로그램의 제어흐름을 개발자가 아닌 '외부 컨테이너'에 위임하는 방식
- 제어의 권한이 컨테이너에게 넘어가 객체의 생명주기를 컨테이너가 관리
전통적인 프로그래밍
- 개발자가 객체의 생성부터 소멸까지를 직접 제어
✅ 의존성 주입
DI (Dependency Injection)
- 제어의 역전을 구현하기 위해 사용하는 방법 '어떤 클래스가 다른 클래스에 의존한다.'
- 객체 간의 결합도를 낮추고, 유연성과 재사용성을 높이며 코드이 테스트가 용이
- 생성자 주입, 필드 주입, 세터 주입 등의 방식으로 이루어짐
✔️스프링 컨테이너 & 빈
✅ 스피링 컨테이너(Spring Container)
- 애플리케이션 대에서 객체(빈)의 생명 주기와 설정을 관리
- 애플리케이션 구성하는 빈들을 생성, 조립 관리
- 제어의 역전(IoC)을 실현
- 의존성 주입(DI)를 지원
✅ 빈(Bean)
- 스프링 컨테이너가 관리하는 객체를 의미
- 개발자에 의해 명시적으로 정의 | 스프링에 의해 자동으로 감지되어 관리
주로 서비스, 리포지토리, 컨트롤러 등의 역할을 수행하는 컴포넌트로 사용
빈의 경우 클래스 이름의 첫 글자를 소문자로 바꿔 관리
- Book 클래스 - book 빈으로 저장되어 관리
- BookStore 클래스 - bookStore 빈으로 저장되어 관리
빈 선언 방법
- XML 파일 사용, 애너테이션 사용(@Component, @Service, @Repository 등)
,자바 설정 클래스에서 @Bean 애너테이션 사용
✅ 관점 지향 프로그래밍 (AOP: Aspect Oriented Programming)
- 애플리케이션의 핵심 로직과 '공통적인 관심사'를 분리하여 관리하는 기법
- 모듈화를 지향
>로그, 보안, 트랜잭션 관리와 같은 '공통적인 관심사'를 핵심 비즈니스 로직과
분리하여 유지보수성과 코드 가독성을 향상
✅ 이식 가능한 서비스 추상화 (PSA: Portable Service Abstraction)
- 특정 기술에 의존하지 않고 다양한 환경에서도 동일하게 동작할 수 있는 스프링의 추상화
EX) 어떤 기술을 사용하든 일관된 방식으로 DB에 접근하도록 인터페이스를 지원 - JDBC, JPA 등 어떠한 DB 접근 방식이든
✔️스프링 부트의 구조
클라이언트 - View - Controller -Service - Repository - 데이터베이스
✅ 프레젠테이션(presentation) 계층
- 컨틑롤러(Controller)
- HTTP 요청을 받고 해당 요청을 비즈니스 계틍으로 전송하는 역할
✅ 비즈니스(Business) 계층
- 서비스(Service)
- 모든 비즈니스 로직을 처리
- 비즈니스 로직
:서비스를 만들기 위한 로직, 웹 사이트에서 벌어지는 모든 작업
✅ 퍼시슨턴스 (Persistence 계층)
- 리포지토리(Repository)
- 모든 데이터 베이스 관려 로직을 처리
> DB에 접근하는 DAO 객체르 사용 가능 - DAO: 데이터베이스와 상호작용을 위한 객체