백엔드/인프런_스프링

1. 프로젝트 환경 설정

smallsilver_west 2024. 11. 9. 20:01

Gradle 전체 설정

 

build.gradle

 plugins {
 id 'org.springframework.boot' version '2.3.1.RELEASE'
 id 'io.spring.dependency-management' version '1.0.9.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') {
 exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
 }
 }
 test {
 useJUnitPlatform()
 }

* 동작 확인

- 기본 메인 클래스 실행

- 스프링 부트 메인 실행 후 에러페이지로 간단히 동작 확인 가능: https://localhost:8080

 

라이브러리 살펴보기

 

스프링 부트 라이브러리

| spring-boot- starter-web

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

- spring-webmvc: 스프링 웹 MVC

 

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

 

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

- spring-boot

-- spring-core

- spring-boot-starter-logging

-- logback, slf4j

 

테스트 라이브러리

| spring-boot-starter-test

- juing: 테스트 프레임워크

- mockito: 목 라이브러리

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

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

 

View 환경설정

 

static/index.html

: Welcome Page 만들기

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

* 스프링 부트에서 제공하는 Welcome Page 기능 활용

https://github.com/smallsilverwest/EWHA.W.UNIV_ECC_Spring/blob/main/src/main/resources/static/index.html

 

thymeleaf 템플릿 엔진

| @Controller

public class HelloController {

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

 

| hello.html

https://github.com/smallsilverwest/EWHA.W.UNIV_ECC_Spring/blob/main/src/main/resources/templates/hello.html

 <!DOCTYPE HTML>
 <html xmlns:th="http://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>

 

thymeleaf 템플릿엔진 동작 확인

컨트롤러에서 리턴 값으로 문자를 반환하면, 뷰 리졸버(viewResolver)가 화면을 찾아서 처리

- 스프링 부트 템플릿엔진 기본 viewName 매핑

- resources:templates/ + {ViewName} + .html

그림1) 동작 환경 그림

 

* spring-boot-devtools 라이브러리를 추가하면, html 파일 컴파일 후 서버 재시작 없이 View 파일 변경 가능

ex) 인텔리J: 메뉴 build → Recomplie