https://www.youtube.com/watch?v=z0EaPjF3pCQ&list=WL&index=1
"스프링 부트"가 다루는 영역
1. 빌드
- 1-1. 프로젝트 생성
- 1-2. 의존성 관리
- 1-3. 애플리케이션 패키징 및 실행
2. 코딩
- 2-1. 개발 툴 제공
- 2-2. 자동 설정
- 2-3. 외부 설정
3. 배포 및 관리
- 3-1. 도커 이미지 생성
- 3-2. Actuator
- 3-3. 스프링 부트 어드민
1. 빌드
1-1. 프로젝트 생성
- Spring initializr
- 프로젝트는 특정한 디렉토리 구조를 가지며, 이를 자동으로 생성
- Maven / Gradle 선택
- Java / Kotiln / Groovy 선택
- 의존성 자동 추가
- 패키징 방법 (JAR / WAR) 선택
- 자바 버전 선택
1-2. 의존성 관리
- 프로젝트에 필요한 의존성을 쉽게 관리
- 프로젝트를 식별하는 정보는 3가지
- groupId
- artifactId
- version - 그러나 Spring 설정에서는 dependency의 version을 생략
- + 현재 Spring boot에 가장 알맞은 버전으로 자동 설정 - [Maven] <parent>를 선언
- spring-boot-starter-parent
- spring-boot-dependencies : spring-boot-starter-parent의 부모
- <dependencyManagement>에 버전이 명시되어있음 - [Gradle] plugins에 'io.spring.dependency-management' 명시
- 프로젝트를 식별하는 정보는 3가지
1-3. 애플리케이션 패키징 및 실행
- 다양한 애플리케이션 실행 방법 제공
- 실행 방법
- 1. mvn / gradle 을 이용하여 실행
- 2. IDE를 통해 main 클래스 실행
- 3. 배포 용도의 JAR 패키지 실행
2. 코딩
2-1. 개발 툴 제공
- Spring-Boot-Devtools
- 개발 툴을 통해 템플릿 엔진을 수정할 때, caching으로 인해 변경 사항이 바로 적용되지 않음
- Spring-Boot-Devtools를 통해, 애플리케이션을 재실행하지 않고 빌드만 해도, 코드의 변화를 감지하여 최소한의 변경사항만 적용
- 실제 애플리케이션을 실행할 때는 Devtools를 빼고 빌드해야하는지?
- 패키징 후 실행시 Devtools의 설정이 기본적으로 무시됨
2-2 . 🌟자동 설정🌟
- 스프링은 설정해야할 것이 많음
- 그럼에도 불구하고 어떠한 설정도 없이 프로그램 실행이 편리하게 동작하는 것은 "자동 설정" 기능 덕분 - org.springframework.boot.autoconfigure.EnableAutoConfiguration
- 다른 프로젝트에 구현된 내용도 간단한 설정으로 바로 사용 가능
2-3. 🌟외부 설정🌟
- 코드에서 특정한 값을 밖으로 꺼내는 방법
- [참고] Java spec상 application.properties를 UTF-8이 아닌 다른 인코딩으로 읽게 되어있음
- 한글로 작성시 깨짐
- Transparent native to ASCII conversion : 나는 한글을 써서 ASCII로 안바뀐 것처럼 보이지만 바뀌어있음 - application.properties에 정의
// application.properties
my.message = test
@Component
@ConfigurationProperties("my")
public class MyProperties {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
- application.properties가 위치할 수 있는 4군데
- 구체적인 = config 디렉토리 안에 있는
- /resources/config - 가까운 = JAR 안이 아닌 파일 시스템에 있는
- 실행할 때 (java -jar) 해당 디렉토리에 있는 application.properties
- 구체적인 = config 디렉토리 안에 있는
3. 배포 및 관리
3-1. 도커 이미지 빌드
- Docker 이미지 만드는 법
- Intellij > Gradle > Build > bootBuildImage (별도 설치 필요한듯) - Library 재사용
- APP / Libarary 계층을 나눔
- 계층형으로 이미지를 만들어서 Libarary를 재사용
- [참고] "dive" tool을 통해 이미지 계층을 볼 수 있음
3-2. Actuator
- [참고] 🌟HATEOAS란?🌟
- Hypermedia As The Engine Of Application Status
- Runtime 중에 Logger의 level을 바꾸는 것이 가능
3-3. 스프링 어드민
- actuator에서 가져온 정보를 모니터링 가능
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] Rest API 서버 만들기 1 - 문서화, 구조, Exception, Security (0) | 2022.06.05 |
---|---|
[Spring] Actuator (0) | 2022.05.15 |
[Spring] Spring AOP (Aspect-Oriented Programming) (0) | 2022.04.19 |
[Spring] JpaRepository의 delete (0) | 2022.04.04 |
[Spring] @Transactional과 propagation (0) | 2022.04.04 |