Study/Spring

[Spring] 스프링 부트 시작하기. Hello, World!

dev_kong 2023. 1. 3. 14:55
728x90
728x90

인텔리J 유료버전 기준으로 작성된 글 입니다
Java Version 11

 

프로젝트 생성

인텔리J를 실행 시키고 New Project를 통해 프로젝트를 생성한다. 프로젝트 이름은 HelloWorld 이다.

 

왼쪽에 수많은 아이콘들이 있는데, 그중 Spring Initializr를 클릭하고 오른쪽과 같이 설정한다.

현재 사용하는 Java version은 11이다.

 

인텔리J 무료버전은 Spring Initializr가 지원하지 않는다.
Spring Initializr를 통해 손쉽게 시작할 수 있다.

 

Next를 누르면 최상단에 Spring boot version을 선택할 수 있는데,
3.0.0 버전 이상은 Java17 을 필요로 한다. 사용하는 Java version에 맞게 설정한다.

 

왼쪽에 여러 라이브러리들이 보이는데,

간단한 기능만 테스트 해볼거니까 Spring Webthymeleaf만 선택했다.

thymeleaf는 Template Engine의 일종이다.

 

HTML 이용해서 브라우저에 Hello, World 찍기

Spring을 통해 서버를 실행시키고,
localhost:8080 에 접속하면, Hello, World가 브라우저에 나타나도록 해보려한다.

 

생성된 프로젝트의 디렉토리 구조를 살펴보면
com.example.helloWorld라는 패키지가 보이는데,
하위에 controller 패키지를 생성해주고, 그 안에 HelloController를 생성하고,

resources하위에 templates 라는 패키지 하위에 hello.html을 생성해주었다.

 

HTML

우선 HTML을 먼저 작성해보자.

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    Hello, World!
</body>
</html>

그냥 Hello, World! 만 채워 넣었다.

Controller


import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.GetMapping;

@Controller  
public class HelloController {

  @GetMapping("/")
  public String hello() {
      return "hello";
  }
}

컨트롤러 클래스 위에는 @Controller 어노테이션을 붙여주어야 한다.

그리고 메소드에는 @GetMapping이라는 어노테이션이 붙어있는데,
인자값으로 들어오는 값이 url을 의미한다.

즉, \Get요청이 들어오면 해당 메서드가 실행된다.

 

어노테이션은 사전적 의미로는 주석이라는 뜻이다.
자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있다.

 

return에 있는 값은 조금전 만들었던 HTML파일의 이름이다.

이렇게 해주고 서버를 실행시켜보면,
콘솔에 뭐가 주루룩 뜬다.


현재 실행 시키는 서버에 대한 정보가 포함 되어있는데,
슥 훑다보면,

이런내용을 확인 할 수 있다.

port 8080으로 서버가 열린걸 확인할 수 있다.


브라우저를 켜서
localhost:8080으로 접속을 해보면,

작성해둔 HTML을 확인 할 수 있다.

728x90
728x90