스프링 부트 (Spring Boot)
- 자바 기반의 오픈 소스 프레임워크
- 스프링 기반 애플리케이션 개발을 단순화하고 빠르게 할 수 있게 만든 도구
# 특징
1) 개발 프로세스 간소화
- 자동 설정
- 내장 서버
: 따로 다운로드받지 않아도 사용 가능한 서버가 내장되어 있음
· 2.x.x 버전까지는 tomcat / 3.x.x 버전부터는 jetty
- 의존성 관리
: 어떤 tool을 사용할지 기술하기만 하면 자동으로 HTTP 통신으로 받아옴
(기존처럼 따로 다운받아서 등록하지 않아도 됨)
- 개발자들이 빠르게 프로젝트를 시작할 수 있게 도움
- 환경 설정 간소화
2) 관례에 따른 설정 원칙
- 개발자가 지정하지 않은 경우에도 기본 설정을 자동으로 적용
3) 독립 실행 가능한 애플리케이션
- 내장된 웹 서버를 포함하고 있음 → 독립 실행 가능
4) 높은 확장성
- 다양한 스프링 모듈과 서드파티 라이브러리를 통합할 수 있음
- 서드파티 라이브러리
: 제작사가 아닌, 제 3자 (외부의 다른 업체)가 개발한 라이브러리
- 모듈 단위로 많은 기능들을 제공함
→ 필요한 모듈들만 선택해서 프로그램 개발 가능
ex) 스프링 부트, 스프링 클라우드, 스프링 배치, 스프링 데이터, 스프링 시큐리티 등
5) ContentNegotiation
: Accept 헤더에 따라 응답의 Content-type을 자동으로 결정함
- 스프링 프레임워크의 ContentNegotiatingViewResolver를 확장하여 구현됨
6) BufferedReader과 BufferedWriter의 기능을 아주 쉽게 사용할 수 있음
Spring의 핵심 개념
① IoC / DI : 의존 관계 주입
- https://young0105.tistory.com/189
② AOP : 관점 중심 프로그래밍
- https://young0105.tistory.com/192
③ PSA : 이식 가능한 추상화 (모듈화)
스프링 이니셜라이저
- 스프링 부트 애플리케이션을 빠르게 생성하기 위한 온라인 도구
- 다양한 설정 옵션을 선택하여 초기 프로젝트 구조를 생성할 수 있음
- 다양한 의존성을 선택 및 추가할 수 있음
- 매우 간편하게 초기 설정을 구성할 수 있음
Gradle
- JVM 기반 프로젝트를 위한 빌드 자동화 시스템
- Groovy 기반 DSL을 사용하여 빌드 스크립트를 작성할 수 있음
- Maven과 유사하지만, 보다 유연하고 확장 가능한 구조
· 다양한 플러그인을 통해 손쉽게 추가 기능 확장 가능
- 각각의 프로젝트에 대한 의존성 관리, 테스트, 빌드, 패키징, 배포 등을 자동화할 수 있음
- 멀티 프로젝트 지원
: 여러 개의 하위 프로젝트를 하나의 빌드 스크립트에서 관리할 수 있음
# 도메인 특화 언어 (DSL, Domain-Specific Languages)
: 관련 특정 분야에 최적화된 프로그래밍 언어
· 해당 분야 or 도메인의 개념과 규칙을 사용함 (도메인 : 범주화되어 있는 언어)
메세지 컨버터 (Message Converter)
- HTTP 요청과 응답 본문의 데이터를 객체로 변환하거나, 객체를 데이터로 변환하는 컴포넌트
- 번역기 역할
빌드 도구
# Maven
- 모든 라이브러리를 관리하는 중앙 저장소
- pom.xml 파일에 xml 형식으로 기술해두면 라이브러리들이 자동으로 다운로드됨
# Gradle
- build.gradle 파일에 기술해두면 라이브러리들이 자동으로 다운로드됨
- 사용자 > USERNAME > .m2 > repository 폴더에 라이브러리가 들어옴
- 서버 프로그램에서는 상태 값을 변경할 수 있는 리터럴 값을 사용하는 것은 가급적 지양하는 것이 좋음
→ 자주 사용하는 문자열은 따로 상수로 선언해서 클래스에 모아두자.
- 동일한 의미의 alert 메세지도 동일한 문자열을 반환하도록 선언해두면 좋음
# 클래스 생성
1
2
3
4
5
6
7
|
public class Define {
// final : 상수
// static : 객체를 생성하지 않아도 클래스명으로 접근해서 멤버 변수 사용 가능
public final static String PRINCIPAL = "principal";
}
|
cs |
# 활용
1
2
3
4
5
|
// 기존
User principal = (User) session.getAttribute("principal");
// 상수 사용
User principal = (User) session.getAttribute(Define.PRINCIPAL);
|
cs |
기타 메모
- application.properties : web.xml 파일처럼 설정하는 파일
→ 포트 번호 설정 : server.port=8080
- POJO (Plain Old Java Object) : 순수 자바 코드
'Java > Spring Boot' 카테고리의 다른 글
[Spring Boot] ResponseEntity (0) | 2023.04.11 |
---|---|
[Spring Boot] IoC (제어의 역전) / DI (의존성 주입) ★ (0) | 2023.04.11 |
[Spring Boot] REST API - Controller 구현 예시 (0) | 2023.04.10 |
[Spring Boot] MVC 패턴 (0) | 2023.04.10 |
[Spring Boot] 파라미터 전달 방식 (0) | 2023.04.09 |