[Spring] 스프링 입문 (코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술) - 프로젝트 환경 설정

밀크야살빼자·2023년 4월 18일
0

프로젝트 생성

사전 준비물

프로젝트 선택

  • Project : Gradle Project
  • Spring Boot : 2.3.x
  • Group : 보통 기업명을 쓴다.
  • Artifact : 프로젝트 명을 쓴다.
  • Dependencies
    • Spring Web
    • Thymeleaf

요즘 개발에서 test 코드는 매우 중요하다

build.gradle은 버전을 설정하고 라이브러리를 가져오는 역할의 코드가 적혀있다.
.gitignore에 깃허브에 올라가면 안되는 것들을 적어준다.

HelloSpringApplication을 실행하면 run에 port 번호 8080이 뜨면 정상적으로 프로젝트가 실행이 된 것이다.

웹에서 localhost:8080을 들어가면 아래와 같이 Whitelabel Error Page가 뜨면 정상적으로 프로젝트가 실행이 된 것이다.

라이브러리 살펴보기

build.gradle의 라이브러리

  • 의존관계가 있는 라이브러리를 다운로드 해준다.
  • 버전 설정이 가능하다.
  • plugins : 우리가 설정한 스프링 부트 버전 나온다.
  • dependencies : 필요한 라이브러리들이다.
  • implementation으로 해당 라이브러리를 어떤 홈페이지에서 가져온다.

요즘은 라이브러리 하나 빌드해서 웹서버 올리면 끝 -> 요즘 개발 방식이다.

System.out.println()으로 로그를 남기지 않고 LOGGING으로 남기는데 그 이유는 심각한 에러를 따로 모아보기도 할 수 있고 로그 파일들을 관리 할 수 있다.

스프링 부트 라이브러리

  • spring-boot-starter-web
    • spring-webmvc:스프링 웹 MVC
    • spring-boot-starter-tomcat:톰켓(웹서버)
  • spring-boot-starter-thymeleaf:타임리프 템플릿 엔진(View)
  • spring-boot-starter(공통) : 스프링 부트 + 스프링 코어 + 로깅
    • spring-boot
      • spring-core
    • spring-boot-starter-logging
      • logback, slf4j

테스트 라이브러리

  • spring-boot-starter-test

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

View 환경 설정

spring에서 어떻게 web과 상호작용하는지
web -> spring 내장 tomcat 서버 -> spring controller -> view resolver -> web

웹 브라우저에서 localhost:8080/hello 라고 던지면 스프링 부트는 톰캣이라는 웹서버를 내장하고 있는데 이를 받아서 HelloController의 @GetMapping(hello)와 매칭이 되어 해당 메소드가 실행이 된다. 그러면 스프링이 모델이라는 것을 만들어서 넘겨주면 그 모델에 model.addAttribut()로 키는 data, 값은 hello로 넣어서 return "hello" 를 통해 반환하면 뷰리졸버가 화면을 찾아서 처리한다. 뷰리졸버는 resources:templates/에 있다.

정적페이지 : 파일을 던져주면 그 파일을 그대로 보여주는 페이지이다.
-> 템플릿 엔진이라는 사용함으로써 내가 원하는대로 모양을 바꿀 수 있다.
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>

HelloController

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

hello.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}"> 안녕하세요. 손님</p>
</body>
</html>
profile
기록기록기록기록기록

0개의 댓글