[스프링 입문] 1. 프로젝트 환경설정
📌 프로젝트 생성 방법
➡ 스프링 부트 스타터 사이트를 통해서 프로젝트 설정
Project : Gradle - Groovy
Language : Java
Spring Boot : 3.x.x
➡ 버전 옆에 SNAPSHOT OR M2 등이 써있는 것은 정식 버전이 아니다
➡ 버전이 3 이상이면 Java 17 이상 사용 추천,
➡ javax 패키지 이름을 jakarta로 변경,
➡ H2 데이터베이스를 2.1.214 버전 이상 사용
group : 기업명 작성 (임시로 hello)
artifact : 프로젝트명 (임시로 hello-spring)
Name/Description/Package name : 유지
Dependencies : 사용할 라이브러리
➡ Spring Web (웹프로젝트), Thymeleaf(HTML 템플릿엔진) 사용
Packaging : Jar
➡ GENERATE
다운로드 받은 파일(hello-spring)을 압축 풀고 IntelliJ에서 해당 파일에 있는 build.gradle을 Open한다.
✔ Maven VS Gradle
- Maven
- 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드 하고, 로컬 시스템에 모두 저장한다
- 고정적이고 선형적인 단계의 모델을 기반으로 함
- Gradle
- JVM 기반으로 실행되는 스크립트 언어, Task 기반으로 작업을 수행한다. Java와 호환되며, Java 문법과도 유사하다.
- 작업 의존성 그래프를 기반으로 한다.
- 스크립트 길이와 가독성 면에서 우세하다!
📌 라이브러리 살펴보기
gradle : 의존 관계가 있는 모든 라이브러리를 다운로드한다
1. 스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat : 톰캣(웹서버)
- spring-webmvc : 스프링 웹 MVC
- spring-boot-starter-thymeleaf : 타임리프 템플릿 엔진(View)
- spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
- spring-boot
2. 테스트 라이브러리
- spring-boot-starter-test
- junit : 테스트 프레임워크
- mockito : 목 라이브러리
- assertj : 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test : 스프링 통합 테스트 지원
📌 View 환경설정
1. Welcome Page : domain을 쳤을 때 보이는 첫 화면
🔶 src/main/resources/static/index.html
<!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>
✔ 정적 페이지 (static)
- 템플릿 엔진을 이용해 형태 변경 가능
- imdex.html을 찾고, index template을 찾아서 자동으로 Welcome page로 사용한다.
📌 Controller
- 스프링 프레임워크에서 웹 애플리케이션의 요청을 처리하는 역할을 담당하는 클래스이다.
- 사용자의 요청을 받아 해당 요청을 처리하고, 결과를 생성하여 응답을 반환한다.
- 주로 웹 애플리케이션에서 클라이언트와의 상호작용을 담당한다.
✔ @Controller
: 스프링에서 컨트롤러를 정의하기 위해서는 해당 클래스에 이 애노테이션을 적용해야 한다.
✔ @RequestMapping
: 특정 URL 패턴과 해당 요청을 처리하는 메서드를 연결한다.
HelloController
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
@Controller
public class HelloController {
@GetMapping("hello") //url로 localhost:8080/hello이 검색될 경우 메소드 호출
public String hello(Model model){ //model 생성
model.addAttribute("data", "hello!!"); //key 값은 data, value 값은 hello!!
return "hello";//resources/templates 아래에 존재하는 hello.html 실행
}
}
hello.html
🔶 resources/templates/hello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"> //thymeleaf 템플릿 엔진 선언
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p> //${data}이 앞에 HelloController에서 value 부분으로 치환
</body>
</html>
📌 thymeleaf 템플릿엔진 동작 확인
- 웹 브라우저에
localhost:8080/hello
검색 - 내장 톰캣 서버에서 해당 주소를 받아서 HelloController 실행
@GetMapping("hello")
-> localhost:8080/hello와 매칭되면 메소드가 실행된다.model.addAttribute("data", "hello!!");
(key = data, value = hello!!)return "hello";
->resources/templates
아래에 존재하는hello.html
실행된다- controller에서 return 값으로 문자를 반환하면
viewResolver
가 해당 화면을 찾아서 처리한다. - 스프링 부트 템플릿엔진 기본 viewName(return 값)과 매핑
resources/templates/+{ViewName}+.html
- controller에서 return 값으로 문자를 반환하면
spring-boot-devtools
라이브러리를 추가하면 html 파일을 수정하더라도 컴파일만 해주면 서버를 재시작할 필요 없다.
컴파일 방법 : build -> Recompile
이 글은 <김영한_스프링 입문>을 수강하고 참고하여 작성한 글입니다
![](https://t1.daumcdn.net/keditor/emoticon/face/large/073.png)
NEXT
[스프링 입문] 2. 스프링 웹개발 기초
📌 정적 컨텐츠 (static content) 파일을 그대로 web browser에 내려주는 방식 스프링 부트는 정적 컨텐츠 기능을 자동으로 제공해준다 resources/static/** 아래의 파일과 매핑된다 🔶 resources/static/hello-stati
nyeroni.tistory.com
Reference
Maven과 Gradle의 개념 및 비교
스프링부트 프로젝트를 하며 여러 가지 기능 구현을 하면서 여러 의존성 라이브러리를 추가해야하는 경우가 많았다. 따라서 추가하는 방법을 위해 공식 문서나 스택오버 플로우, 블로그 등을
velog.io
[Spring] 빌드 관리 도구 Maven과 Gradle 비교하기.
spring에서 초기에 프로젝트를 생성할 때, 빌드 도구를 Maven으로 선택할지, Gradle로 선택할지에 대한 결정이 필요하다. 그냥 나는 항상 익숙한데로, 의심의 여지 없이 spring boot 프로젝트를 진행
jisooo.tistory.com
'인프런 Spring 강의 정리 > 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 카테고리의 다른 글
[스프링 입문] 6. 스프링 DB 접근 기술 (0) | 2024.01.20 |
---|---|
[스프링 입문] 5. 회원 관리 예제 - 웹MVC 개발 (0) | 2024.01.20 |
[스프링 입문] 4. 스프링 빈과 의존관계 (0) | 2024.01.20 |
[스프링 입문] 3. 회원 관리 예제 - 백엔드 개발 (0) | 2024.01.20 |
[스프링 입문] 2. 스프링 웹개발 기초 (0) | 2024.01.20 |