본문 바로가기

Backend/spring

Spring 프로젝트 환경설정

스프링부트 프로젝트 생성

Java 11

IDE: IntelliJ

자바 11로 변경하기

1) sudo vi ~/.bash_profile 입력하고 비번 입력

sudo vi ~/.bash_profile
Password:

2) i 눌러 INSERT 모드로 전환하고 export 행의 버전 11로 변경

export JAVA_HOME=$(/usr/libexec/java_home -v 11)

3) ESC 키를 누르고 :wq 입력해서 저장후 종료

 

4) source ~/.bash_profile 입력 (source 명령어로 변경된 패스를 실행한다.)

source ~/.bash_profile

5) 변경된 버전 확인

java -version
java version "11.0.11" 2021-04-20 LTS

*다른 방법

File -> Projcet Structure에 접근해서 Project SDK를 관리할 수 있다.

Spring Initiallizer

최근은 Gradle Project를 사용한다.

Project Metadata의 Group에는 보통 기업의 url을 작성하고 artifact는 결과물의 이름을 의미한다

Dependencies에

Spring Web

Thymeleaf: 템플릿 엔진

두 가지 디펜던시를 추가한다.

이후 프로젝트를 생성한다.

IntelliJ IDEA

Open or Import - build.gradle을 통해 파일 오픈한다.

디펜던시 등을 다운로드 받는데 시간이 걸린다.

 

/src/main/java: 주요 소스코드를 관리

/src/resources: java파일을 제외한 html등의 자원들을 관리

/src/test: 테스트 코드를 삽입

 

build.gradle

스프링부트 등장 이후 모두 다 설정할 필요는 없어졌다.

그래이들을 당장 자세하게 공부할 필요없다.

버전설정, 라이브러리, 의존성 등을 관리한다.

패키지들은 mavenCentral()에서 다운받는다. 원격 저장소 경로는 build.gradle의 reposiotories에서 관리한다.

 

/java/hello.hellospring/HelloSpringApplication.java

파일에 main함수를 실행하면 톰켓 웹서버를 통해 localhost:8080에 접근할 수 있다.

라이브러리 살펴보기

/External Libraries폴더를 살펴보면 여러가지 라이브러리들이 존재한다.

Gradle과 같은 최신 빌드 툴의 라이브러리는 의존성을 갖는다.

우측 Gradle tab의 Dependencies폴더 안을 보면 라이브러들의 의존성 관계들을 파악할 수 있다.

 

logging의 중요성

실무에서 콘솔을 찍어볼 때, system.out.ln()과 같은 기본 콘솔 출력은 사용하지 않는다. logging을 통해 로그를 관리해야 에러를 관리할 수 있다. spring에서는 일반적으로 slf4j, logback두 가지 조합을 이용해서 logging한다. 해당 라이브러리들도 기본으로 추가가 된다.

 

spring-boot-starter-web

  • spring-boot-starter-tomcat: 웹 서버
  • sprintf-webmvc: 스프링 웹 MVC

spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(view)

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

  • sprintg-boot
    • spring-core
  • spring-boot-starter-logging
    • logback, slf4j

View 환경설정

/src/main/resources/static에 html파일을 추가한다.

index.html로 설정하는 경우 웰컴 페이지라 불리며, 웹 서버에 접속하자마자 랜더링 된다.

spring의 기능은 아주 방대하다. spring공식 홈페이지에서 필요한 부분을 검색해서 활용하는 능력이 필요하다.

 

동작하는 컨트롤러를 만들어보자

새로운 패키지를 생성하자. 다음으로 @controller라는 annotation을 추가한다.

 

/resources/templates에 hello.html을 추가한다.

th에 타임리프를 추가해주면 템플릿으로 사용이 가능하다. 

http://localhost:8080/hello으로 접속하면 

 

스프링부트는 톰캣이라는 내부 서버를 포함한다.

컨트롤러의 getMapping()(get method)는 url에 추가된 부분을 인식한다.

hello 클래스의 리턴값을 통해 template아래의 리턴값을 이름으로 하는 파일을 찾는다.

 

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버가 화면을 찾아서 처리한다.

model은 key-value형태를 갖는다.

빌드하고 실행하기

1. ./gradlew build

2. cd build/libs

3. java -jar hello-spring-0.0.1-SNAPSHOT.jar

4. 실행 확인

 

위 명령어를 통해 빌드할 수 있다. 빌드의 결과물은 libs에 저장된다. 

빌드 결과물은 터미널에서 java를 통해 실행시킬 수 있다.

결과물인 .jar파일 하나만 있으면 어플리케이션을 실행시킬 수 있다. 예제의 경우 빌드 결과물 이름은 다음과 같다.

hello-spring-0.0.1-SNAPSHOT.jar

 

./gradlew clean

clean 명령어를 통해 빌드 폴더를 깨끗하게 정리할 수 있다.

에러가 발생하는 경우 위 명령어를 통해 빌드 폴더를 정리한 뒤 다시 수행하면 된다.