[Spring] 2_1. 프로젝트 환경설정

2025. 4. 18. 14:59·BE/SpringBoot
728x90

프로젝트 생성

 

JetBrains Account

 

account.jetbrains.com

JetBrains Account에서 인텔리제이 학생 라이센스를 갱신해줬다.. !

졸업한지 벌써 4년이 지났는데 아직도 접속 가능하다니 .. 감격

 

우선 인텔리제이를 사용할 예정이라 intellij 학생 라이센스를 갱신해줘야 한다. 구매할거면. ... 구매해도 됨

 

강의에서는 java 11을 사용하는데, 이미 노트북에 java 17(jdk 17)이 설치되어있어서 .. 그냥 17버전으로 진행할 예정

 

https://start.spring.io/에 들어가서 프로젝트를 생성해준다.

과거 프로젝트들은 Maven으로 생성했는데, 요즘은 Gradle로 생성하는 것이 추세

Dependencies 추가해서 프로젝트 파일 만든 후 해당 zip 파일 내 build-gradle을 intellij에서 import해서 열어준다

프로젝트 실행하면,

http://localhost:8080/ 에서 이렇게 Whitelabel Error Page가 뜨면 잘 실행 된 것


라이브러리 살펴보기

요새는 톰캣 WAS 서버를 따로 설치하는게 아니라, 라이브러리로 제공되기 때문에 Gradle이 의존관계가 있는 라이브러리를 함께 다운로드한다.

스프링부트 라이브러리

  • 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

 

 

Slf4j logback 이란 무엇이며, 왜 로깅을 해야할까? 💁‍♂️

…

haon.blog

 

 

Logger는 사드세요... 제발: SLF4J와 Logback - 인하대학교 인트아이

자바의 로깅(Logging) 라이브러리로는 Log4j 등 다양한 종류가 있지만, 현재 가장 좋은 조합은 SLF4J+Logback이라고 생각합니다. SLF4J는 Simple ...

int-i.github.io

Logger에 대한 부분은 조금 더 공부한 뒤에 다시 한번 정리해볼 생각이다!

 

나 또한 System.out.println()으로 로그를 출력하면서 테스트를 해왔는데,

로그를 사용하면 우선적으로

  • Sysout을 할 때 잡아먹는 리소스를 낭비하지 않을 수 있고,
  • 직접 코드를 작성해 원하는 정보를 만들지 않아도 Logger를 통해 클래스의 이름, 시간, 레벨 등의 다양한 정보를 제공받을 수 있다.
  • 또, 로그를 콘솔 밖에서 원하는 조건, 원하는 형태에 따라 쉽게 파일로 관리할 수 있다.

테스트 라이브러리

  • spring-boot-starter-test
    • junit: 테스트 프레임워크
    • mockito: 목 라이브러리
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

View 환경설정

<!DOCTYPE HTML>

<html>
    <head>
        <title>hello</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    Hello
    <a href="/hello">hello</a>
    </body>
</html>

resources/static/index.html

스프링부트가 제공하는 Welcome Page 기능

  • static/index.html을 올려두면 Welcome Page 기능을 제공한다.
package hello.hello_spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return "hello";
    }
}

HelloController를 생성해 "hello"로 GetMapping해줬다.

<!DOCTYPE HTML>

<html xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
 <p th:text="'안녕하세요.' +${data}">안녕하세요. 손님</p>
</body>

</html>

 

<p th:text="'안녕하세요.' +${data}">안녕하세요. 손님</p>

body 내부에 th:문법을 사용하는 걸 볼 수 있는데, 이 문법은 

<html xmlns:th="https://www.thymeleaf.org">

html 상단에 위처럼 Thymeleaf 템플릿 엔진을 선언하면 Thymeleaf 문법을 상용할 수 있다.

<p th:text="'안녕하세요.' +${data}">안녕하세요. 손님</p>

또한 여기서 나타난 ${data}는 

model.addAttribute("data", "hello!!");

컨트롤러에 선언한 이 부분에서 "hello!!" value로 치환된다.

 

http://localhost:8080/hello 에 들어가면 위와 같은 페이지가 열린다.

동작 환경 그림

  • 컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버('viewResolver')가 화면을 찾아서 처리한다.
    • 스프링부트 템플릿엔진 기본 viewName 매핑
    • resources: `templates/` + {ViewName}+`.html`
viewResolver:  실행할 뷰를 찾는 일을 한다. 페이지 컨트롤러가 리턴한 뷰 이름에 해당하는 뷰 컴포넌트를 찾는 역할

빌드하고 실행하기

`./gradlew build`
`cd build/libs`
`java -jar hello-spring-0.0.1-SNAPSHOT.jar`
실행 확인

서버에 배포할 때는 이 jar 파일 하나로 배포하면 된다.

 

728x90

'BE > SpringBoot' 카테고리의 다른 글

[Spring] 4. 스프링 빈과 의존관계  (1) 2025.04.29
[Spring] 3_2. 회원 관리 예제 - 회원 레포지토리 테스트 케이스 작성 / 서비스 개발 / 서비스 테스트  (0) 2025.04.25
[Spring] 3_1. 회원 관리 예제 - 비즈니스 요구사항 정리 / 회원 도메인과 레포지토리 생성  (1) 2025.04.19
[Spring] 2_2. 스프링 웹 개발 기초  (0) 2025.04.19
[Spring] ResponseEntity란?  (0) 2022.11.30
'BE/SpringBoot' 카테고리의 다른 글
  • [Spring] 3_2. 회원 관리 예제 - 회원 레포지토리 테스트 케이스 작성 / 서비스 개발 / 서비스 테스트
  • [Spring] 3_1. 회원 관리 예제 - 비즈니스 요구사항 정리 / 회원 도메인과 레포지토리 생성
  • [Spring] 2_2. 스프링 웹 개발 기초
  • [Spring] ResponseEntity란?
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (446) N
      • App·Android (1)
      • AI (12) N
      • BE (50)
        • HTTP 웹 기본 지식 (8)
        • SpringBoot (23)
        • 스프링부트와 JPA 활용 (0)
        • JAVA (1)
        • PHP (11)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (28)
        • Bigdata (6)
        • Database (1)
        • Python (0)
        • 빅데이터분석기사 (13)
      • Infra (1)
      • Activity (7)
        • Intern (0)
        • SK AI Dream Camp (0)
        • 구름톤 유니브 4기 (1)
        • 리모트 인턴십 6기 (3)
        • 봉사활동 (0)
        • 부스트캠프 AI Tech 8기 (3)
      • CS (8)
      • 취준 (12)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (2)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    브루트포스 알고리즘
    문자열
    너비우선탐색
    이분탐색
    그래프이론
    자료구조
    그리디알고리즘
    시뮬레이션
    최단경로
    구현
    매개변수탐색
    수학
    정렬
    그래프탐색
    백준
    다이나믹프로그래밍
    티스토리챌린지
    누적합
    투포인터
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[Spring] 2_1. 프로젝트 환경설정
상단으로

티스토리툴바