[WIL] Spring Boot - 1주차

Jiseok Son·2023년 3월 21일
0

Project 생성

Prerequisite

Java 11 이상 설치, IDE::IntelliJ 사용

1. "start.spring.io" -> "Spring initializr"

Gradle groovy, Java version, Spring Boot version 선택 후 generate -> 생성된 프로젝트를 *.zip 파일 형태로 다운로드

metadata:

Group: domain name
Artifact: build된 결과물 이름

dependencies:

Spring Web, Thymeleaf(template engine)

2. IntelliJ -> open "build.gradle" as project

1. run "public static void main(String[] args)"

application class의 main method를 실행한다.

2. "localhost::8080" 접속

tomcat web server 통해 서버 실행

Library 살펴보기

Gradle 통해 의존성있는 모든 라이브러리 다운로드함
logback, slf4j: 로깅
juint, assertj...: test tool

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

index.html은 서버 실행 시 첫 화면으로 자동 설정

Controller (Web app의 첫 진입점)

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

localhost:8080으로 들어온 요청이 helloController로 전달
helloController는 model에 적당한 속성(데이터)를 추가하고 template page의 이름을 String으로 반환
template engine에 의해 html 렌더링 후 응답

Build

UNIX/Linux 환경
$ gradlew build
Windows 환경
$ gradlew.bat build
실행
$ java -jar /build/libs/*.jar

project 디렉터리에 포함된 gradle 스크립트를 실행한다.
배포시 빌드된 jar 파일을 전달하고, 서버에서는 이를 실행

웹 개발 방법

정적 콘텐츠(static html, css, js...)

Spring 기본 제공 기능
resources/static/ 밑에 파일을 작성

MVC, template engine

MVC 패턴이란?

사용자 인터페이스(View), 데이터베이스(Model), 비지니스 로직(Controller)를 분리하여 어플리케이션을 작성하는 디자인 패턴

Spring의 MVC패턴 구조

http 요청 -> 적절한 controller에 전달 -> model 적용 -> template rendering -> http 응답

@Controller
public class HelloController {
    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value="name", required = false) String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}
<html xmlns:th="http://www.thymeleaf.org">
<body>
    <p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

API

API와 서버?

요청을 보내는 클라이언트와 응답을 보내는 서버로 구분. 프로그램과 프로그램, 클라이언트와 서버를 연결하는 매개체 역할, 규칙의 집합을 API라 한다.

RESTful이란?

Representational State Transfer, 자원을 이름으로 구분하여 자원의 상태를 주고받는 모든 것. URI로 자원을 명시, HTTP Method(POST, GET, PUT 등)을 통해 자원에 동작을 적용하는 것.

Spring에서 API server 기능 구현

@ResponseBody (http response body에 직접 삽입)
객체를 반환 시 json 형태로 변환되어 응답

@Controller
public class HelloController {
    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
        return "hello " + name;
    }

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
profile
make it work make it right make it fast

0개의 댓글