Super Kawaii Cute Cat Kaoani [스프링 입문] 1. 프로젝트 환경설정

[스프링 입문] 1. 프로젝트 환경설정

2024. 1. 20. 04:37
728x90
SMALL

📌 프로젝트 생성 방법

스프링 부트 스타터 사이트를 통해서 프로젝트 설정

 

Project : Gradle - Groovy
Language : Java
Spring Boot : 3.x.x
➡ 버전 옆에 SNAPSHOT OR M2 등이 써있는 것은 정식 버전이 아니다
➡ 버전이 3 이상이면 Java 17 이상 사용 추천,
➡  javax 패키지 이름을 jakarta로 변경,
➡ H2 데이터베이스를 2.1.214 버전 이상 사용
group : 기업명 작성 (임시로 hello)
artifact : 프로젝트명 (임시로 hello-spring)
Name/Description/Package name : 유지
Dependencies : 사용할 라이브러리
➡ Spring Web (웹프로젝트), Thymeleaf(HTML 템플릿엔진) 사용
Packaging : Jar

 

➡ GENERATE

 

다운로드 받은 파일(hello-spring)을 압축 풀고 IntelliJ에서 해당 파일에 있는 build.gradle을 Open한다.

 

✔ Maven VS Gradle
  • Maven
    • 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드 하고, 로컬 시스템에 모두 저장한다
    • 고정적이고 선형적인 단계의 모델을 기반으로 함
  • Gradle
    • JVM 기반으로 실행되는 스크립트 언어, Task 기반으로 작업을 수행한다. Java와 호환되며, Java 문법과도 유사하다.
    • 작업 의존성 그래프를 기반으로 한다.
    • 스크립트 길이와 가독성 면에서 우세하다!

 

 

📌 라이브러리 살펴보기

gradle : 의존 관계가 있는 모든 라이브러리를 다운로드한다

1. 스프링 부트 라이브러리

  • 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

2.  테스트 라이브러리

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

 

반응형

 

📌 View 환경설정

1. Welcome Page  : domain을 쳤을 때 보이는 첫 화면

🔶 src/main/resources/static/index.html

<!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>

 

✔ 정적 페이지 (static)

  • 템플릿 엔진을 이용해 형태 변경 가능
  • imdex.html을 찾고, index template을 찾아서 자동으로 Welcome page로 사용한다.

 

 

📌 Controller

  • 스프링 프레임워크에서 웹 애플리케이션의 요청을 처리하는 역할을 담당하는 클래스이다.
  • 사용자의 요청을 받아 해당 요청을 처리하고, 결과를 생성하여 응답을 반환한다.
  • 주로 웹 애플리케이션에서 클라이언트와의 상호작용을 담당한다.

 

@Controller : 스프링에서 컨트롤러를 정의하기 위해서는 해당 클래스에 이 애노테이션을 적용해야 한다.
@RequestMapping : 특정 URL 패턴과 해당 요청을 처리하는 메서드를 연결한다.

 

HelloController

package hello.hellospring.controller;

import org.springframework.stereotype.Controller;

@Controller 
public class HelloController {
    @GetMapping("hello") //url로 localhost:8080/hello이 검색될 경우 메소드 호출
    public String hello(Model model){ //model 생성
        model.addAttribute("data", "hello!!"); //key 값은 data, value 값은 hello!!
        return "hello";//resources/templates 아래에 존재하는 hello.html 실행
    }
}

 

hello.html

🔶 resources/templates/hello.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"> //thymeleaf 템플릿 엔진 선언
<head>
    <title>Hello</title>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p> //${data}이 앞에 HelloController에서 value 부분으로 치환
</body>
</html>

 

 

📌 thymeleaf 템플릿엔진 동작 확인

  1. 웹 브라우저에 localhost:8080/hello 검색
  2. 내장 톰캣 서버에서 해당 주소를 받아서 HelloController 실행
  3. @GetMapping("hello") -> localhost:8080/hello와 매칭되면 메소드가 실행된다.
  4. model.addAttribute("data", "hello!!"); (key = data, value = hello!!)
  5. return "hello"; -> resources/templates 아래에 존재하는 hello.html 실행된다
    • controller에서 return 값으로 문자를 반환하면 viewResolver가 해당 화면을 찾아서 처리한다.
    • 스프링 부트 템플릿엔진 기본 viewName(return 값)과 매핑
    • resources/templates/+{ViewName}+.html

 

 

 

spring-boot-devtools
라이브러리를 추가하면 html 파일을 수정하더라도 컴파일만 해주면 서버를 재시작할 필요 없다.
컴파일 방법 : build -> Recompile

 

 

 

이 글은 <김영한_스프링 입문>을 수강하고 참고하여 작성한 글입니다

 

 

 


NEXT

 

[스프링 입문] 2. 스프링 웹개발 기초

📌 정적 컨텐츠 (static content) 파일을 그대로 web browser에 내려주는 방식 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공해준다 resources/static/** 아래의 파일과 매핑된다 🔶 resources/static/hello-stati

nyeroni.tistory.com


Reference

 

 

 

Maven과 Gradle의 개념 및 비교

스프링부트 프로젝트를 하며 여러 가지 기능 구현을 하면서 여러 의존성 라이브러리를 추가해야하는 경우가 많았다. 따라서 추가하는 방법을 위해 공식 문서나 스택오버 플로우, 블로그 등을

velog.io

 

 

[Spring] 빌드 관리 도구 Maven과 Gradle 비교하기.

spring에서 초기에 프로젝트를 생성할 때, 빌드 도구를 Maven으로 선택할지, Gradle로 선택할지에 대한 결정이 필요하다. ​ 그냥 나는 항상 익숙한데로, 의심의 여지 없이 spring boot 프로젝트를 진행

jisooo.tistory.com

 

728x90
LIST

BELATED ARTICLES

more