[Spring] <입문> 1편

BeenLab·2023년 7월 24일

스프링 입문

목록 보기
1/4

0. 들어가며

본격적인 백엔드 개발을 시작해보려고 합니다.
사실 APM(Apache,php,mysql) 환경에서 회원/비회원 ,게시판 로그인 기능 등을 개발해본 경험이 있습니다.
제가 구축한 서버에서 취약점을 찾고 그것을 막아보며 공부한 경험이 있기에 서버 단에서 이루어 져야하는 처리 로직에 대한 이해도도 어느정도 있는 편입니다.

1편은 단순 정보 전달 성격이 강합니다. 코드 레벨에서 복기해야 할 부분은 크게 없고 스프링 컨테이너 동작원리, 특히 Controller 와 View 에 대한 개념을 조금 맛보았습니다.

1. 프로젝트 생성

start.srping.io 에 접속하여 Java 버전, 빌드 툴, 스프링 부트 버전을 선택하여 프로젝트 파일을 Generate 합니다.
또한 Spring Web, Thymeleaf 등 Dependencies(어떤 라이브러리를 끌어다 쓸것인지)를 설정해 줍시다.

Spring Web 에는 톰캣이 내장되어 있으며 API 개발 및 Spring MVC 패턴으로 개발을 할수 있는 컨테이너를 제공합니다.
Thymeleaf 는 jsp ,php 와 같은 템플릿 엔진이라고 보면 될듯 합니다.

IntelliJ 자바 버전과 프로젝트 에서 설정한 자바 버전이 일치해야 합니다.
File > Project Structure 에서 Project 항목과 Module 항목 에서 자바 버전을 맞춰줍시다!
또한 Platform Settings 의 하위 항목 SDKs 에서도 버전 또한 잊지 마시길!

Gradle Jdk 도 버전을 맞춰 주어야 하며 빌드와 실행 옵션을 Gradle 에서 IntelliJ 로 바꾸어 줍시다.

2. 라이브러리 살펴보기

스프링 부트 라이브러리
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-starter-test
junit: 테스트 프레임워크
mockito: 목 라이브러리
assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
spring-test: 스프링 통합 테스트 지원

3. View

Spring 은 특정경로에 index.html을 올려두면 Welcome page 기능을 제공합니다.

static/index.html

localhost:8080/hello 입력 시 스프링 컨테이너의 동작 모습입니다.
1. /hello 요청
2. 내장 서버가 스프링 컨테이너에 전달
3. @Controller 에서 @GetMapping("hello")를 통해 컨트롤러에 접근
4. 컨트롤러가 hello 을 리턴
5. 뷰 리졸버가 hello Mapping 하여 화면을 찾아서 처리

프로젝트 > controller package 생성 > package 내 Controller 클래스 생성

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

View
resources/templates/hello-template.html

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
profile
코더 그 이상

0개의 댓글