본문 바로가기

Backend/Spring

[Spring] 프로젝트 환경설정 & 빌드

728x90

김영한의 스프링부트 - 입문편을 보고 작성된글 입니다. 

 

 

목차

  • 프로젝트 생성
  • 라이브러리
  • View환경설정
  • 빌드 및 실행 

 

Java11 , IntelliJ사용

 

 

프로젝트 생성

Spring project를 밑바닥 부터 짜야했지만, 이제는 Spring boot를 이용하여, 프로젝트를 생성해낼 수 있다!

https://start.spring.io

 

 

아래와 같이 골라준 후 generate를 한다. 

 

다운받아진 프로젝트를 압축을 푼다.

 

IntelliJ로 열기

압축을 푼 hellospring 폴더내부의 build.gradle을 IntelliJ에서 Open해준다.

 

Open as Project

처음 프로젝트를 열 때는 위에서 말했듯 선택한 것을 기반으로 library를 가져와 다운받기 때문에 시간이 조금 오래걸린다.

 

참고)

더보기

 

build.gradle 

plugins {
	id 'org.springframework.boot' version '2.5.4'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

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'
}

test {
	useJUnitPlatform()
}

 의존관계 (dependencies)로, 3가지 라이브러리를 다운 받았지만,

사실 저 라이브러리 들도 각각 의존관계를 가지고 있으며, 그에 필요한 것이 자동으로 받아진다

전체적으로 다운받아진 라이브러리들은 아래 디렉토리 구조 부분에서 "External library"에서 확인해 볼 수 있다.

이들의 의존관계를 알고 싶다면,

command2번 누르면 나타남

 Gradle 클릭 > hellospring > Dependencies 아래항목에서 확인할 수 있다.

 또한, (*) 는 중복제거라는 의미임

 

 

 

 

실행시켜보기

 

Directory 구조 참고!

 

위에 쓰여 있듯이,

main > java 아래가 실제 java code이다.

 HelloSpringApplicationTests에 가서 Start를 해보면,

다음과 같이 8080포트로 실행되었음을 알 수 있다.

Run 하면 실행되는 일

package hello.hellospring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloSpringApplication {

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

}​


main 함수 내의 
SpringApplication.run 함수가 실행되면서

HelloSpringApplication 이라는 클래스가 실행된다 (@SpringBootApplication이라는 annotation이 있어야함!) 

Tomcat이라는 웹서버를 내장하고 있다. 이 웹서버를 자체적으로 띄우면서 스프링부트가 함께 올라간다.



과거에는 웹서버와 개발라이브러리가 완전히 분리되어 있었고, 

WAS를 따로 만들고 자바코드를 밀어넣는식(?) 으로 개발했다면, 지금은 소스코드가 웹서버를 내장(embedded)하고 있다.


 

localhost:8080에 접속했을 때,

뭔가 에러메세지 창이 뜨면, 성공적으로 실행된 것이다.

Command + F2로 실행되었던 것 종료 가능 

 

 

gradle을 통해서 실행하면 느려질 수 있기 때문에

Preference > gradle 에 들어가서 

Build and run using과 Run tests using을 모두 IntelliJ 로 변경해준다.

이렇게 되면, gradle을 통하지 않고 intelliJ에서 바로 java를 띄우기 때문에 훨씬 빨라진다. 

 

 

 

더보기

라이브러리 참고 

 

 

스프링 부트 라이브러리 (김영한님 강의자료 출처)

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: 스프링 통합 테스트 지원

 

 

 

실무에서는 에러를 출력할때 system.printError을 사용하지 않고, log를 이용한다 

logging library에 대해서 

logback  

slf4j

  

Test

junit v5 (핵심)

 

테스트를 편리하게 하도록 도와주는 것 

mockito

assesrtj

 

spring-test : 스프링과의 통합 테스트를 돕는 라이브러리

 

 

 

빌드 방법

글을 따로 작성하긴 너무 짧아서 쓰는 빌드방법

1. console창(터미널) 프로젝트 폴더(위에서는 helloSpring)로 이동 
2. ./gradlew build(빌드 후 빌드 폴더 생성됨)
3. cd build/libs
4. java -jar (파일명).jar

빌드 후 jar파일만 복사하여 서버에 넣은 후 실행하면, 서버에서도 스프링이 동작함.

안될 때는 clean build해보기! 

 

 

참고 자료

  • 프로젝트 생성

https://www.inflearn.com/course/스프링-입문-스프링부트/lecture/48553?tab=curriculum&speed=1.25 

 

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

728x90