[Spring] 인프런 - 스프링 입문 스프링부트(1-2)
이렇게 빌드된 프로젝트를 intelliJ로 열어보게 되면. gitignore, build.gradle 파일이 위치해 있다.
build.gradle 파일
gradle 파일은 버전 설정을 하고 라이브러리를 당겨오는 파일로써 기능한다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}
//start.spring.io에서 설정한 언어, spring boot version, dependencies version
group = 'hello'
version = '0.0.1-SNAPSHOT'
//start.spring.io 에서 설정한 이름.
java {
sourceCompatibility = '17'
}
//선택한 java 버전, 17 21중에 17을 사용한 이유는 현재 Java 17이 LTS로 지정되어 있으므로, 장기적인 안정성을 보장받을 수 있다.
repositories {
mavenCentral()
}
//라이브러리를 다운받을 장소 설정, 필요하면 특정 사이트 넣기 가능
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'
}
//처음에 선택한 dependencies들을 나열 + 자동으로 test library를 추가해줌
tasks.named('test') {
useJUnitPlatform()
}
.gitignore 파일
git에는 필요한 소스파일 코드만 올라가고, 빌드된 파일들 같은 게 올라가면 안 된다. 이러한 작업들도 start.spring.io 사이트에서 자동으로 생성해 준다.
파일 실행
다시 java/hello.hellospring 폴더로 돌아와 HelloSpringApplication을 실행시켜 주면,
아래의 콘솔로그에 spring boot 버전과 여러 log들이 출력된다.
여기에서 집중해야 할 부분은
이 부분이다.
포트 8080에 기반하여 웹브라우저에 localhost:8080으로 들어가게 된다면,
다음과 같이 나타나게 되는데, 이는 프로젝트의 환경설정에 성공을 한 것이다.
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
이런 한 줄 코드가 간단하게 웹페이지를 띄우는 이유는 SpringApplication에 톰캣이라는 웹서버를 내장하고 있어, 실행 시 자동으로 띄우게 된다.
Thymeleaf, springboot-web, test 라이브러리를 당겼지만, 좌측 폴더의 외부 라이브러리를 확인하게 된다면
다음과 같이 수많은 library들이 참조가 된 것을 확인할 수 있다.
그 이유는 gradle 덕분이라고 할 수 있는데, gradle이 위의 thymeleaf, springboot-web, test과 의존관계를 가진 라이브러리들을 자동으로 세팅해 주었기 때문이다.
로깅
system.out.println
으로 출력을 하면 안 된다. 무조건 로그를 통해서 출력을 해야 한다.
로깅에 사용되는 라이브러리에는 (강의에서는) slf4j와 logback 이 두 가지가 있는데, 요즘은 성능도 빠르고 여러 가지 지원하는 경우도 되게 좋아 logback을 사용한다고 한다.
테스트
java에서는 테스트할 때 JUnit 사용. spring에서도 사용. 4가 굉장히 오래 사용되다가 근래에 5로 넘어가는 추세이다.
라이브러리 정리
스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
- spring-boot
테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
코드 전체 정렬 단축키: Ctrl + Alt + L
배운 점
start.spring.io를 이용하여 프로젝트 빌드하기
테스트에는 junit 4->5
로깅은 logback, sif4j 사용. logback이 더 빠르고, 여러 기능지원하여 사용
궁금한 점
spring boot 버전별 차이점/ java 17,21 차이?