
- 프로젝트 방식을 고른다.
- 보통 성능이 좋은 Gradle을 사용
- 코틀린을 모른다면 Groovy를 선택

- 프로젝트에서 사용할 언어를 고른다.

- 스프링 부트 버전을 고른다.
기존 버전은 2.7 (자바 8 이상, 스프링 5)
최신 버전은 3.0 (자바 17 이상, 스프링 6)

Spring Boot DevTools
프로젝트가 변경되면 재로딩 하는 등 프로젝트 외적인 기능을 하는 라이브러리
Lombok
어노테이션 기반으로 코드를 자동생성해주는 라이브러리
Spring Configuration Processor
yml 혹은 properties에서 자동완성을 도와주는 메타데이터 라이브러리
Spring Web
내장 톰캣뿐 아니라, Spring MVC 패턴을 구현하는 데에 필요한 대부분의 기능이 포함된 라이브러리(모듈)
Thymeleaf / Freemarker / Mustache / Groovy Templates
템플릿 엔진
Spring Security
로그인, 인증, 보안, 필터링, 유저 관리 등 필수 기능을 모아둔 시큐리티 프레임워크
OAuth2 Client
소셜로그인 로직을 구현하기 위한 라이브러리
Spring Data JPA
Java Persistence API라고 하여 자바 ORM 기술
객체를 DB처럼 사용할 수 있음
Mybatis Framework
XML 파일 또는 자바 코드를 사용하여 Query문을 직접 작성하여 DB를 관리하는 프레임워크
H2 Database
메모리를 데이베이스로 사용
데이터베이스 설정을 전혀 할 필요가 없이 의존성에 추가하면 끝
참고자료
Spring Initializr를 통해 보는 스프링 각종 모듈 알아보기
Spring Initializr를 통해 보는 스프링 각종 모듈 알아보기(2)
Gradle for Java를 설치해준다.
Spring Boot Extension Pack을 설치해준다.
구글창에 Spring initializr를 검색해서 들어가준다.
들어가서 아래와 같이 선택해준다.(java 버전 17버전을 사용하기 때문에 선택해줬다.)
프로젝트 네임은 하고 싶은대로 작성한다.(저희 첨이라 demo그대로 사용하기로 했다.)
Add Dependencies를 클릭해준다.
들어가서 필요한 dependencies를 클릭해준다.
Spring Boot Dev Tools, Lombok, Spring Configuration Processor는 무조건!!선택해야 한다.
그 자신이 필요한 dependencies를 클릭해준다.
실습에 아래와 같이 필요해서 설치했다!
다 선택해주면 아래의 generate를 클릭해준다.
그럼 demo라는 zip폴더가 생기고 압축을 풀어 자신의 폴더 안에 넣어준다.
먼저 html을 하나 만들어준다.
<html xmlns:th="http://www.thymeleaf.org">
타임리프를 사용하기 위해 html안에 넣어준다.
(값을 가져오기 위함이다.)
타임리프사용법참고
↑클릭해서 참고한다.
vscode에서 타임리프 자동완성 기능을 쓰기 위해 확장팩을 설치해준다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="/lucky">second로 가기</a>
<h1>안녕하세요</h1>
<h1 th:text="${name}"></h1>
</body>
</html>
화면을 확인하기 위해 라이브서버로 열면 아래와 같이 나온다.
html을 화면에 뿌려주기 위해 demo 아래에 tempController.java파일을 생성해준다.
Controller 처리 결과 후 응답할 view와 view에 전달할 값을 저장한다.
Model과 차이점은 Model은 데이터만 저장하는데,
ModelAndView는 데이터와 이동하고자 하는 View Page를 같이 저장한다

실습은 주석으로 설명..
package com.example.demo;
// import java.util.Random;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
// @Component - IoC에 등록될 객체라고 알림
@Controller
public class tempController {
// @~~Mapping 화면 주소를 설정하는 어노테이션
@GetMapping("/hello")
public ModelAndView index(){
// this는 클래스로 만든 인스턴스 - 자기 자신
System.out.println(this);
// 출력할 화면과 데이터를 세팅하는 객체
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", Math.random());
modelAndView.setViewName("first");
return modelAndView;
}
}
DemoApplication.java를 실행해서 콘솔 창의 마지막 줄에 Start가 보이면 서버가 정상 실행 된 것이다.
실행해 보면 아래와 같이 나오는 것을 확인할 수 있다.
Controller에서
modelAndView.addObject("name", Math.random());html에서
<h1 th:text="${name}"></h1>
행운 번호를 출력해본다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="/hello">first로 가기</a>
<h1>오늘의 행운 번호는?</h1>
<!-- 1~10까지 숫자 하나 뿌리기 -->
<!-- 주소 / lucky -->
<h1 th:text="${num}"></h1>
</body>
</html>
라이브서버로 실행하면 아래와 같은 화면이 나온다.

엔트포인트를 위에 hello가 아닌 lucky로 받고 화면에 10까지의 랜덤한 숫자가 나오도록 한다.
@GetMapping("/lucky")
public ModelAndView index2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("num", (int)(Math.random() * 10)+1 );
modelAndView.setViewName("second");
return modelAndView;
}
실행해보면 아래와 같이 나온다.(새로고침시 숫자가 바뀐다.)
이동하기 클릭하면 각자의 페이지로 이동이 된다.

포트번호 변경하고 싶을때!!
번호를 적어주면 변경가능하다.
커피를 예시로 생성해보기
구현
- com.example.coffee
- coffee.html - /coffee
- CoffeeController - coffee.html연결
- 아메리카노 출력
Spring initializr에서 프로젝트를 생성한다.

html로 화면을 만든다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1 th:text="${name}"></h1>
</body>
</html>
Controller를 만들어준다.
package com.example.coffee;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class CoffeeController {
@GetMapping("/coffee")
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", "아메리카노");
modelAndView.setViewName("coffee");
return modelAndView;
}
}
application에서 run해준다.
localhost:8080/coffee로 들어간다.
그럼 아메리카노가 화면에 출력된다.
