나의 브을로오그으

#1-1. [스프링 입문] - 프로젝트 설정 본문

Spring

#1-1. [스프링 입문] - 프로젝트 설정

__jhp_+ 2022. 7. 9. 20:43

https://start.spring.io/

해당 사이트에 들어가서 Spring 프로젝트를 쉽게 만들 수 있다.

강의에서는

Project : Gradle Project

Language : Java

Spring Boot : 2.7.1(Release 버전은 계속 바뀜)

Dependencies : Thymleaf(Template Engines), Spring Web(Web)

설정 후 Generate 하면 !

 

이후 IntelliJ로 해당 프로젝트를 open 하면

Project Tree

이렇게 나온다.

주로 보아야 할 디렉터리는 src이다.

하위 디렉터리로 크게 maintest로 나뉘는데

현재 개발 트렌드에서는 test코드를 작성하는 것이 굉장히 중요하기에 거의 대부분

웹 애플리케이션 프로젝트를 생성하게 되면 이렇게 main과 test디렉터리 형태로 생성된다.

 

[build.gradle]

프로젝트 관련 여러 설정을 하거나 외부 라이브러리(패키지) 등을 추가 할 수 있는 파일이다.

과거에는 전부 개발자가 타이핑을 해야 했지만,

현재에는 Spring Boot가 나오면서 개발자 친화적인 방식으로 변경되었다. 

 

dependencies를 보면 spring intializer에서 추가했던 라이브러리들을 implementation(추가)했다고 나오는데

이 라이브러리를 다운받는 곳이 repositories에 있는 mavenCentral()이라는 공개된 사이트가 있고, 이곳에서 해당 라이브러리를 다운받으라는 설정이다. 원한다면 다른 경로를 추가해도 된다.

 

[.gitignore]

git에 프로젝트를 올릴 때 무시하는 파일을 설정하는 설정파일.

 

실행을 해보자!

1번째는 IntelliJ에서 Run을 했을 때의 모습이고

2번째는 웹 브라우저에서 주소창에 lcoalhost:8080을 입력해서 나온 결과이다.

이렇게 나오면 성공!

 

 

 

[Libraries]

build.gradle을 보면 의존성으로 추가한 것이 3개뿐인데

엄청나게 많은 라이브러리들을 의존하고있다. gradle과 같은 build tool들은

의존 관계를 관리해준다. 예를 들어 

우리가 추가한 spring-boot-starter-web 프로젝트를 쓰려면  이 프로젝트가 굉장히 많은 의존관계를 갖고 있다. spring-boot-start가 spring-boot를 의존하고, 이것이 또 spring-boot-start-json 의존하고, 이러한 관계를 관리하고 알아서 포함시켜주기에 많은 라이브러리 들이 추가되게 된다. 이러한 역할을 gradle tool이 해준다.

 

[Dependencies]

Intellij 우측 상단에 보면 gradle버튼이 있는데 이를 클릭하여 Dependencies를 보면 주요 라이브러리 별 의존관계를 확인 할 수 있다.

 

과거에는 tomkat과 같은 웹 서버를 설치 한 후에 여러가지 라이브러리들을 설치해야 했다. 그러나 현재는 이렇게 따로 설정 필요 없이 임베디드(내장)되어 쉽게 app을 실행 할 수 있다.

 

[핵심 라이브러리]

스프링부트 라이브러리

Spring-Boot Lib

-> spring-boot-starter-tomcat: 톰켓(웹서버)

    -> spring-webmvc: 스프링 웹 MVC

->  spring-boot-starter-thumeleaf: 타임리프 템플릿 엔진(View)

-> spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅

    -> spring-boot

        -> spring-core

    -> spring-boot-starter-logging

        -> logback, slf4j

 

테스트 라이브러리

- spring-boot-starter-test

    - junit: 테스트 프레임워크

    - mockito: 목 라이브러리

    - assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리

    - spring-test: 스프링 통합 테스트 지원