[Spring 입문] - 1. 설치, 설정

heyhey·2023년 1월 16일
0

Spring

목록 보기
1/23

프론트엔드로써 백엔드에 대해 당연히 이해해야 한다고 생각한다.
Django와 node.js를 사용할 줄 알지만, 역시 대세는 스프링인 듯..
현업에서도 스프링이 필수가 되었기에 스프링에 대한 기본 상식과 앞으로 프로젝트에서도 스프링을 이용해 서버를 구축하기 위해 스프링을 공부하게 되었다.

스프링

프로젝트 환경 설정

java 설치

  • 11버전을 다운로드한다.
    링크 : https://www.oracle.com/java/technologies/downloads/#java11-mac

  • java 버전을 확인한다.
    java -version
    => 19버전을 깔았었는데 11로 바꿔보자

  • 현재 설치된 Java 버전 및 경로 확인
    /usr/libexec/java_home -V
    => 깔린 java 목록들을 확인할 수 있다.

Matching Java Virtual Machines (2):
    19.0.1 (arm64) "Oracle Corporation" - "Java SE 19.0.1" /Library/Java/JavaVirtualMachines/jdk-19.jdk/Contents/Home
    11.0.17 (arm64) "Oracle Corporation" - "Java SE 11.0.17" /Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-19.jdk/Contents/Home
  • 새로 설치한 버전으로 환경 변수를 등록한다.

  • .zshrc 파일 편집

    • vim ~/.zshrc
    • 아래의 문구 추가
    export JAVA_HOME=`/usr/libexec/java_home -v 11`
    export PATH=$PATH:$JAVA_HOME/bin
  • 다시 자바 버전 확인 => 11버전 적용 완료

intelliJ 설치

프로젝트 생성

요즘은 스프링 Boot가 알아서 생성해준다.
링크 : https://start.spring.io

  • Gradle 프로젝트가 추세이다.

  • Spring boot : snapshot은 아직 정식출시 되지 않은 것

  • 자바 버전 11

  • Group : 기업명..

  • Artifact : 빌드 결과물(프로젝트 이름)

  • Dependencies : 스프링 boot 기반으로 프로젝트를 진행할건데 어떤 라이브러리를 사용할 건지

    • Spring Web
    • Thymeleaf

=> GENERATE

Spring Boot 버전 이슈가 있어서 버전을 맞춰줘야 했다.

생성된 프로젝트 열기

intelliJ 에서 프로젝트 열기 -> build.gradle 을 열면 된다.

src / java / hello / GoodApplication 실행 해보면

http://localhost:8080 에서 whitelabel 에러가 나온다.

서버를 실행시키면 tomcat이라는 웹서버를 실행시킨다.

gradle build 확장자 변경하기

intelliJ 로 바꿔준다
gradle을 통해 실행시키던 것을 intelliJ로 실행시키면 빨라진다.

View 환경설정

white label error 말고 정적인 html 파일을 전달해주고 싶다.

아래의 위치에 html 파일을 생성해준다.
src/main/resources/static/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>WELCOME</title>
</head>
<body>
    <h1>HELLO</h1>
    <p>안녕하세요</p>
    <a href="/welcome">안녕하세요로 가자</a>
</body>
</html>

http://localhost:8080/ 를 확인해보면 HELLO가 출력된다.

지금까지는 정적 페이지 이기 때문에 동작할 수 있는 페이지를 위한 템플릿 엔진을 이용한다.

여기서는 Thymeleaf 를 이용해서 적용시킨다.

1. Controller 생성

아래의 위치에 Controller를 생성해준다
java/hello.springgood/controller/HelloController

package hello.springgood.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";
    }
}
  • 생성을 해주면 @Controller를 입력한다.

  • GetMapping은 우리가 아는 get,post 요청의 get이다 .

    • /hello로 요청이 들어왔을 때 아래의 내용을 실행시킨다.
  • hello는 모델을 통해 값을 전달한다.

    • model.addAttribute("data","hello");
    • "data"라는 변수의 값을 "hello" == {"data":"hello"}
  • return "hello"는 hello.html을 반환한다는 의미이다.

2. View 생성

다음의 위치에 hello 라는 html을 생성해준다.
java/resources/templates/hello.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
    <title>WELCOME</title>
</head>
<body>
<h1 th:text="뿡 +${data}"></h1>
</body>
</html>

<html xmlns:th="http://www.thymeleaf.org"> 을 통해 템플릿 엔진을 사용하겠다 선언

<h1 th:text="뿡 +${data}"></h1> 다음의 태그 안의 값을 text로 치환한다.
여기서 data 는 Controller 에서 보낸 값인 {"data":"hello"}에서 가져오게된다.

템플릿 엔진 순서

  • 웹 브라우저에서 localhost:8080/hello 를 보낸다.
  • 내장 톰켓 서버에서 확인 후
  • helloController 가 실행되고
  • return "hello" , model{data:"hello"} 을 view로 보내준다.
  • 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver에서 hello.html를 처리해준다.
  • 템플릿 엔진에서 이 값을 처리해주고 변환된 html을 브라우저에 return 해준다.

빌드하고 실행하기

  • 빌드하기
    ./gradlew build

  • 빌드 확인하기
    cd build/libs
    ls -arlth

=> spring-good-0.0.1-SNAPSHOT.jar (18MB)

  • 빌드된 파일 실행하기
    java -jar spring-good-0.0.1-SNAPSHOT.jar
    => 이 파일을 배포해서 이걸 실행시키면 된다.

  • 배포파일 없애기 및 새로 빌드
    ./gradlew clean
    ./gradlew clean build

profile
주경야독

0개의 댓글