
김영한 강사님의 스프링 부트 강의에 더불어 따로 공부한 내용도 추가한 글입니다.
✅ 프로젝트 생성하기
Project
라이브러리를 가져왔을 때 이 라이브러리를 가져와서 빌드까지 해주는 툴
요즘은 거의 다 Gradle을 사용하고 있다. 아직까지 옛날꺼나 레거시 프로젝트에는 Maven으로 남아있는 것도 있지만 거의 다 Gradle로 넘어오는 추세라고 한다.
- 왜 Maven보다 Gradle을 더 많이 쓰게 되었는지?
- Maven은 스크립트를 XML로 정의 하여 길이가 길고 이로인해 가독성이 떨어지는데 Gradle은 그루비를 사용하기 때문에 동적인 빌드는 이 그루비 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
- Build라는 동적인 요소를 XML로 정의하기에는 어렵다.
- 빌드 및 테스트 시 성능이 압도적으로 뛰어나다. 특히 Gradle이 캐시를 사용하기 때문에 테스트 반복시 차이가 더 커짐
- Incrementality 증분성 : gradle은 가능한 경우 변경된 파일만 작업해 중복작업을 피한다. → 증분 빌드
- Build cache : 동일한 입력에 대해서 gradle 빌드를 재사용한다.
- Gradle 데몬 : 빌드 정보를 메모리에 유지하는 프로세스를 구동한다.
- Maven은 스크립트를 XML로 정의 하여 길이가 길고 이로인해 가독성이 떨어지는데 Gradle은 그루비를 사용하기 때문에 동적인 빌드는 이 그루비 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
Language
Spring Boot Ver
Project Metadata
- Group : 보통 기업명이나 도메인을 적어준다.
- Artifact : 빌드 된 결과물
- 나는 자바 11을 사용중이므로 11로 체크
Dependencies
- 라이브러리 설치
나는 html을 만들어주는 템플릿 엔진인 Thymeleaf, 그리고 Spring Web을 넣어주었다.
✅ 실행해보기
다 만들어주고 generate를 누르면 압축파일이 다운받아지는데 그 안을 보면 프로젝트가 다운됐다는 것을 알 수 있다.
인텔리제이에서 build.gradle을 열어준다.
이렇게 뜨면 되고 java > hello > hellospring안에 메인 함수가 들어간 java파일을 참고해보자.
이 main함수를 실행시켜주고 브라우저에서 loacalhost:8080을 쳐주면 브라우저와 인텔리제이 터미널 로그에서는 아래 사진처럼 뜨게된다.
✅ 라이브러리
실제로 build.gradle 파일을 열어보고 그 코드를 봤을 때,
라이브러리는
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
이렇게 밖에 없는 것을 알 수 있는데,
인텔리제이 상에서 External Libraries를 들어갔을 때,
어마 어마하게 많은 것을 볼 수 있다.
내가 라이브러리를 설치한 적이 읍는데…?
요즘 나온 gradle이나 maven들은 의존관계를 다 관리해주기 때문.
의존관계? 그니까 우리가 땡겨왔던 spring web 라이브러리가 있는데, 그 안에서 또 필요로하는 라이브러리를 자동으로 알고 땡겨와준다는 것.
옆 단의 gradle에서 어떤 라이브러리가 얼마나 많은, 어떤 종류의 라이브러리와 의존관계를 가지고 있는지 확인할 수 있다.
우리가 땡겨왔던 Spring boot starter web에는 tomcat(웹서버), webmvc(스프링 웹 MVC) 가 있고 thymeleaf나 start web 덕에 자동으로 설치가된 spring starter에는 spring-core, spring-boot-starter-logging(logback, slf4j) 등의 기본적인 라이브러리가 설치된 것을 확인할 수 있었다.
이외에 테스트 라이브러리(junit 5 ver, mockito, assertj, spring-test)도 있다.
🎲 번외
왜 System.out.println말고 log를 사용하나?
라이브러리들을 보면 기본적인 spring 라이브러리도 들어있는 것을 볼 수 있는데
이중에서 logging을 들어가보자,
그럼 logback이라던가 slf4j 등이 나오는데 이에 대한 라이브러리도 log()를 사용하면 자연스럽게 사용할 수 있다.
📌 logback?
Log4J를 만든 개발자가 이를 기반으로 더 빠른 속도와 더 적은 메모리 점유율 등의 성능을 개발하여 만든 Logging 프레임워크이다.
주요특징
- 로그에 레벨을 설정할 수 있다.
- 출력 방법을 선택할 수 있다.(날짜, 시간, 레벨)
- 로그마다 다른 설정을 쉽게 적용시킬 수 있다.
- 로그 파일을 생성할 때 따로 프로그램을 통해 압축할 필요 없이 자동 압축을 제공한다.
- 장애가 발생할 경우 서버 중지 없이 장애 발생 시점으로부터의 자동 복구를 지원한다.
📌 slf4J?
slf4j는 simple logging facade for java의 약자로써 다양한 로깅 프레임워크(java.util.logging, logback, log4j등)에 대해 간단한 facade(대충 중간다리 역할) 또는 추상화 역할을 하여 사용자가 배포시 원하는 로깅 프레임워크를 연결 할 수 있도록 도와준다.
=> 즉, 이 모든 log 기능들을 쓸 수 있다는 것임. 그래서! log를 쓴다.
📄 출처
강의
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
logback
https://byul91oh.tistory.com/173#:~:text=1. LogBack이란,하여 만든 Logging Framework입니다.
slf4j
'💻백엔드 > SPRING' 카테고리의 다른 글
[Spring Boot 입문 해보기] 스프링 빈과 의존관계를 알아보자 (0) | 2024.06.16 |
---|---|
[Spring Boot 입문 해보기] 회원 서비스 개발하고, 회원 서비스 테스트 해보기 (0) | 2024.06.16 |
[Spring Boot 입문해보기] 회원관리 예제 초기 세팅, 테스트 코드 작성 해보기 (0) | 2024.06.16 |
[Spring Boot 입문해보기] 정적컨텐츠, MVC, API 알아보고 적용해보기 (2) | 2024.06.15 |
[Spring Boot 입문해보기] 웰컴페이지 만들고, 빌드해보기 (1) | 2024.06.08 |