프론트엔드로써 백엔드에 대해 당연히 이해해야 한다고 생각한다.
Django와 node.js를 사용할 줄 알지만, 역시 대세는 스프링인 듯..
현업에서도 스프링이 필수가 되었기에 스프링에 대한 기본 상식과 앞으로 프로젝트에서도 스프링을 이용해 서버를 구축하기 위해 스프링을 공부하게 되었다.
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버전 적용 완료
요즘은 스프링 Boot가 알아서 생성해준다.
링크 : https://start.spring.io
Gradle 프로젝트가 추세이다.
Spring boot : snapshot은 아직 정식출시 되지 않은 것
자바 버전 11
Group : 기업명..
Artifact : 빌드 결과물(프로젝트 이름)
Dependencies : 스프링 boot 기반으로 프로젝트를 진행할건데 어떤 라이브러리를 사용할 건지
=> GENERATE
Spring Boot 버전 이슈가 있어서 버전을 맞춰줘야 했다.
intelliJ 에서 프로젝트 열기 -> build.gradle
을 열면 된다.
src / java / hello / GoodApplication
실행 해보면
http://localhost:8080 에서 whitelabel 에러가 나온다.
서버를 실행시키면 tomcat이라는 웹서버를 실행시킨다.
intelliJ 로 바꿔준다
gradle을 통해 실행시키던 것을 intelliJ로 실행시키면 빨라진다.
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 를 이용해서 적용시킨다.
아래의 위치에 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을 반환한다는 의미이다.
다음의 위치에 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
가 실행되고 hello.html
를 처리해준다.빌드하기
./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