(스프링 부트 입문)스프링 블로그 프로젝트 만들어보기
gitignore 설정
https://www.toptal.com/developers/gitignore/
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
dependencies {
// JPA 의존성 설정 (ORM -- 자바진형 --> JPA(스펙 : 인터페이스) --> 하이버네이트)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-mustache'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
| 플러그인 설치 - 머스태치
| 환경 설정 확인
LF와 CRLF의 차이점 운영체제별 줄바꿈 문자
windows: CRLF(Carriage Return + Line Feed) \r\n
Linux/Mac: LF (Line Feed) \n
LF 방식으로 통일하는 것이 현재 개발 업계 표준
| devtools 활성화 설정
| git 로컬 생성
1. 애플리케이션 구성 파일이란?
application.properties 파일에서 application.yml
application.yml
spring:
profiles:
active:
- dev
application-dev.yml
server:
servlet:
encoding:
charset: utf-8
force: true
port: 8080
application-prod.yml
server:
servlet:
encoding:
charset: utf-8
force: true
port: 5000
Spring Boot 애플리케이션은 실행 시 다양한 설정( 서버 포트, 데이터베이스 연결 정보, 로깅 등)이 필요합니다. 이러한 설정은
애플리케이션 구성 파일에 정의됩니다. Sprong Boot에서는 두 가지 형식의 구성 파일을 지원합니다.
-application.properties: 키-값 쌍으로 작성된 전통적인 형식
-application.yml:YAML 형식을 사용하며, 계층적 구조로 가독성이 높다.
YML은 들여쓰기(보통 2칸 공백)를 엄격히 지켜야 한다. 탭(tab)은 허용되지 않으며, 오타나 들여쓰기
오류는 애플리케이션 제대로 동작 할 수 없다.
2.설정 파일을 여러 개로 나누는 이유?
실무에서 애플리케이션은 다양한 환경(개발, 테스트,프로덕션)에서 실행됩니다. 각 환경마다 필요한 설정이 다릅니다.
- 개발 환경(dev): 로컬에서 디버깅하며 빠른 개발을 위해 포트 8080, 로컬 데이터베이스 사용.
- 프로덕션 환경(prod): 실제 서비스를 위해 포트 5000, 클라우드 데이터베이스 사용.
모든 설정을 하나의 파일에 작성하면 환경별로 설정을 변경하기 어렵고, 실수로 프로덕션 설정을 로컬에서 실행할
위험이 있습니다. . 이를 해결하기 위해 Spring Boot는 프로파일(profile) 기능을 제공합니다.
3.프로파일이란?
- 프로파일은 특정 환경에 맞는 설정 그룹을 정의하는 메커니즘이다.
- application.yml은 기본 설정을 정의하고, 환경별 설정은 application-{proflie}.yml파일에 작성한다.
-파일명 규칙과 약속
application.yml # 기본 설정 파일
application-{profile}.yml # 프로파일별 설정 파일
-----------------------------------------
application-dev.yml: 개발(development)환경 설정
application-prod.yml: 운영(production)환경 설정
application-test.yml: 테스트 환경 설정
application-local.yml: 로컬 개발 환경 설정
4.logback 설정하기
Logback은 Spring Boot의 기본 로깅 프레임워크로, 애플리케이션의 동작 정보를 기록(로그)하는 데 사용됩니다.
로그는 디버깅, 모니터링, 문제 해결에 필수적이며, Logback은 빠르고 유연하며 설정이 간단한 장점이 있습니다.
Logback은 로그 메시지를 콘솔, 파일,또는 외부 시스템(예:데이터베이스)에 출력할 수 있으며, 로그 레벨을 통해 출력할
정보의 중요도를 제어합니다.
application-dev.yml (코드 추가)
server:
servlet:
encoding:
charset: utf-8
force: true
port: 8080
# 2칸 공백, 탭키 절대 사용 금지!
# 로그 설정 (개발환경용)
# 로그 레벨의 개념
# ERROR > WARN > INFO > DEBUG > TRACE
logging:
level:
root: INFO # 모든 라이브러리는 INFO 이상만 출력
com.example: DEBUG # 내 프로젝트는 DEBUG 이상 모두 출력
각 레벨의 용도
ERROR : 시스템 에러, 예외 상황
WARN:경고 , 주의가 필요한 상황
INFO: 일반적인 실행 정보
DEBUG: 개발자용 상세 정보
TRACE: 가장 상세한 추적 정보
설정 없이 실행하면 : 모든 로그가 다 출력되어 중요한 정보를 놓칠 수 있습니다.
|사용 예시 코드 확인해 보기
@RestController
public class BlogController {
// 해당 클래스에서 선언
private static final Logger log = LoggerFactory.getLogger(BlogController.class);
@GetMapping("/blog")
public String getBlog() {
log.debug("메서드 시작"); // 개발할 때만 보고 싶음
log.info("블로그 조회 요청"); // 항상 보고 싶음
log.debug("데이터베이스 연결"); // 개발할 때만 보고 싶음
log.error("에러 발생"); // 반드시 봐야 함
return "블로그 데이터";
}
}