[spring 입문] 프로젝트 환경 설정, 라이브러리

채원·2023년 12월 27일

스프링

목록 보기
1/18
post-thumbnail

출처) 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

여러 웹 프로젝트에서 프론트엔드로 참여했었는데, 그때마다
내가 백엔드를 맡아 API도 만들고 고칠 수 있으면 좋겠다는 생각을 했다.
이전 프로젝트들을 서버에 대한 이해를 바탕으로 다시 완성할 수 있게끔 열심히 공부해야지 🥹

사전 준비

  • Java 17 이상 설치 (내 로컬엔 18 버전이 설치되어 있다)
  • IDE는 intelliJ
    Mac용 intelliJ 체험판으로 설치하였다.

프로젝트 생성

스프링 부트 기반 프로젝트 생성 사이트

Project

  • gradle groovy

Language

  • Java

Spring Boot

  • 3.2.1
    SNAPSHOT은 아직 정식 릴리즈된 버전이 아니어서,가장 최신 버전 선택

Project Metadata
-Group: 기업 도메인 명, 딱히 상관 없으니 hello
-Artifact: 프로젝트 명, hello-spring

Dependencies
가져다 쓸 라이브러리

  • spring web: web 프로젝트이므로
  • Thymeleaf: HTML 템플릿 생성 엔진

이후 Generate 버튼 클릭하면
파일이 다운로드됨

다운받은 파일을 IntelliJ에서 열기

프로젝트 구조

src 아래 java, test로 두 폴더로 나뉘어짐
java - 실제 소스 코드
test - 테스트용 코드

build.gradle
버전 및 라이브러리 설정

sourceCompatibility = '자바 버전'

respositories = 라이브러리 다운 받는 곳 (필요하다면 특정 사이트 url을 넣으면 됨)

dependecies에 선택한 라이브러리가 들어감

.gitignore
깃허브에 소스 코드 제외하고는 올라가면 안되기 때문에 자동으로 빌드 파일 등을 포함해서 올라가지 않게 적혀있음

HelloSpringApplication.java
src/main/java 폴더 내부
아까 생성한 HelloSpring을 실행


8080 포트가 열렸음

http://localhost:8080/
으로 들어가면

이러한 에러 페이지를 확인하면 성공 🎉
아직 아무것도 없기 때문에 당연히 에러페이지
실행 돌린걸 끄면 아예 안나옴

public class HelloSpringApplication {

	public static void main(String[] args) {
		SpringApplication.run(HelloSpringApplication.class, args);
	}

}

메인에서 application을 run 시키면
springBootApplication 자체가 tomcat이라는 웹 서버를 내장하고 있음
웹 서버를 띄우면서 spring boot를 올리는 것

빌드 설정
설정에서 gradle 검색 후 빌드, 런을 gradle에서 IntelliJ로 바꾸기

바꾸면 gradle을 통하지 않아도 되어서 훨씬 빨리 돌아간다는 장점이 있음

라이브러리 확인

intelliJ 왼쪽 하단 아이콘 클릭 후 gradle 누르면 dependencies 확인
➡️ 라이브러리 간 의존 관계를 확인할 수 있음

이런식으로 프로젝트 생성시 적었던 라이브러리 외에도 웹에 필요한 라이브러리는 자동으로 포함되고 불러온 라이브러리가 타고타고 의존 관계가 많아서 실제로는 엄청 많은걸 불러온다
spring core까지 ..

실행만해도 웹 서버를 열 수 있음, tomcat 같이 내장 라이브러리를 가지고 있기 때문임

- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MYC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, sif4j

로그 관리 라이브러리

System.out.println을 사용하지 않음
실무에서는 로깅을 사용해야함 (그래야지 에러 등을 모아볼 수 있어서)

  • spring-boot-starter-logging
  • slf4j (인터페이스), logback (로그 출력) 두 가지 조합을 많이 사용함

테스트 라이브러리

  • junit - 테스트 프레임 워크
  • assertj, mockito (목 라이브러리) 등은 테스트를 편리하게 하기 위한 것들
  • spring-test: 스프링 통합 테스트

0개의 댓글