땃쥐네

Spring Boot를 통하여 Spring 개발 시작하기 본문

Spring

Spring Boot를 통하여 Spring 개발 시작하기

ttasjwi 2021. 12. 13. 15:17

개발환경

  • JDK 11 이상
  • IDE : IntelliJ

프로젝트 생성하기

  • start.spring.io에서 Spring 프로젝트 생성
  • 설정법
    1. Project : Gradle Project
    2. Language : Java
    3. Spring Boot : SNAPSHOT, M1(미정식 버전)과 같은 문자가 안 붙은 버전들 중 최신 버전
    4. Project Metadata
      • Group : 주로 기업 그룹, 도메인
      • artifact, name : 빌드 결과물의 이름
      • Packaging : Jar
      • Java : 11
    5. Dependencies (의존 라이브러리)
      • Spring Web
      • Thymeleaf
  • 가져오기
    • 받은 zip 파일을 풀기
    • IntelliJ에서, File - Open에서 build.gradle을 선택하여 프로젝트 Open

프로젝트 폴더

  1. .gradle : gradle 관련 파일들
  2. .gitignore : git의 tracking에서 열외 시킬 것들. 올리지 말아야할 파일들
    build.gradle
  3. build.gradle : gradle의 빌드 설정. 앞서 start.spring.io에서 설정한 내역들이 여기에 잡혀있음. 버전 설정 및 가져올 라이브러리.
    1. 본래 의존성을 추가할 때 수동으로 버전을 관리해줘야했지만, SpringBoot가 Gradle은 dependencies에서 지정한 라이브러리들이 의존하는 라이브러리들(의존 라이브러리의 의존라이브러리들까지)을 모두 자동으로 가져오고 각각의 현재 프로젝트에 최적화된 버전을 mavenCentral에서 땡겨옴.
  4. src
    • main : 실행 코드
      • java : 자바 파일
      • resources : 자바 파일이 아닌 것들. (XML, properties 등 설정파일, html, ...)
    • test : 테스트 코드

실습 1>

  • 기본 메인 클래스 파일을 통해 실행
    • @SpringBootApplication 애너테이션이 달려있음.
    • 메인 메서드에서 SpringApplication.run(메인클래스.class, 메인메서드의 args) 메서드를 호출하여 실행

  • 실행 결과 : 웹 브라우저 상에서 localhost:8080을 띄웠을 때 에러 메시지가 뜨면 정상적으로 출력 (정적, 동적 html 파일을 어떤 것도 작성, 연동해주지 않았기 때문)

실습 2> Welcome 페이지 띄우기

<!DOCTYPE HTML>
<html>
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>resources/static/index.html 파일을 정적으로 웹 브라우저 상에 띄웁니다!</p>
<p>동적 페이지 가기 : <a href="/hello">hello</a></p>
</body>
</html>

  • resources/static/index.html을 작성하여 올려두면, 이를 Welcome 페이지로 하여 브라우저 상에 그대로 띄움.(정적 페이지)
  • 링크로 걸어둔 /hello에는 대응하는 html 파일이 작성되어있지 않기 때문에 열었을 때 에러 메시지가 뜸.

실습 3> 동적 페이지 띄우기

<!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="'Hello, ' + ${data}" >안녕, 스프링!!!</p>
</body>
</html>
  • resources/templates/noHello.html
  • thymeleaf를 템플릿 엔진으로 함.
package hello.hellospring.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", "Spring!!!");
        return "noHello";
    }
}
  • 웹 브라우저에서 localhost:8080/hello 에 접속
  • 내장된 톰켓 서버를 통해 스프링 컨테이너에 접근
  • /hello의 hello가 맵핑된 메서드를 찾아냄. addAttribute 메서드를 통해 ${data}에 대한 결과값을 "Spring!!!"으로 지정
  • viewResolver에서, return 값에 해당하는 resources/template/리턴문자열.html 파일을 템플릿 엔진에서 처리
  • 페이지에 띄움.
Comments