Spring

[Spring] 인프런 - 스프링 입문 스프링부트(1-2)

nsean 2024. 2. 11. 14:08

이렇게 빌드된 프로젝트를 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-starter-test
    • junit: 테스트 프레임워크
    • mockito: 목 라이브러리
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

코드 전체 정렬 단축키: Ctrl + Alt + L

 

배운 점

start.spring.io를 이용하여 프로젝트 빌드하기

테스트에는 junit 4->5

로깅은 logback, sif4j 사용. logback이 더 빠르고, 여러 기능지원하여 사용

 

궁금한 점

spring boot 버전별 차이점/ java 17,21 차이?