Steps
spring.io 에서 프로젝트 생성
[start.spring.io](https://start.spring.io/)에 접속하여, Java version, Project Project 관리도구, Boot version, dependencies를 설정한 뒤 Generate 버튼을 눌러 프로젝트 파일을 다운로드 받습니다.
저는 아래와 같이 Gradle-Groovy, Java, Boot 2.7.15, Java 11을, spring-starter-web, thymeleaf를 선택하였습니다.
Intellij에서 프로젝트 실행
Generate 버튼을 눌러 다운로드 받은 zip file의 압축을 풀고 Intellij를 실행하여 해당 folder를 open 합니다.
HelloController.java 생성하기
Controller라는 새로운 패키지를 만들고 `HelloController.java` 파일을 생성하여 아래와 같이 기입합니다. `@Controller` anotation은 Spring에 이 Class를 Controller로 관리해줘 라고 알려주는 부분이고, `@GetMapping("hello")`는 hello post-fix가 붙은 URL의 GET 과 hello 함수와 매핑시키는 작업입니다.
package hello.hellospring.controller;
@Controller
public class HelloController{
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "hello!!");
return "hello";
}
}
hello.html 생성하기
ThymeLeaf 템플릿 엔진을 사용하여 Web Browser에 보여줄 것이기 때문에, resources -> templates 폴더 아래에 hello.html 을 만들어 thymeleaf 문법에 따라 Controller의 model로 붙어 전달받은 데이터를 화면에 출력하도록 코드를 작성합니다.
<!DOCTYPE html>
`HelloController.java`와 `hello.html` 두 개의 파일을 생성했고, 프로젝트 source tree는 아래와 같습니다.
Spring Boot 실행
HelloSpringApplication 에 Spring Boot 서버의 시작점인 **main** 함수가 존재하는데, mouse를 hover하면 run button이 보이게 되고 이 버튼을 눌러 Spring Web Server를 동작 시킵니다.
아래처럼 로그 메시지에 Tomcat 서버가 8080 port 정상적으로 실행되었다는 메시지가 출력 되면 정상입니다.
2023-09-03 10:14:44.512 INFO 53925 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-09-03 10:14:44.519 INFO 53925 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-09-03 10:14:44.519 INFO 53925 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.79]
2023-09-03 10:14:44.563 INFO 53925 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-09-03 10:14:44.564 INFO 53925 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 478 ms
2023-09-03 10:14:44.663 INFO 53925 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2023-09-03 10:14:44.752 INFO 53925 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-09-03 10:14:44.759 INFO 53925 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 0.909 seconds (JVM running for 1.099)
아래 처럼 `http://localhost:8080/hello` 에 web browser 주소에 접속하면 hello 메시지가 나오는 것을 확인할 수 있습니다.
Gradle로 build하고 실행하는 법
Intellij를 사용하지 않고, 터미널에서 아래 명령어를 통해서도 Spring Boot Application build및 실행이 가능하다.
$./gradlew clean build
$ cd build/libs
$ java -jar hello-spring-0.0.1-SNAPSHOT.jar
Spring은 정말 거대하기 때문에, 또한 예전에는 Tomcat 서버가 내장된 방식이 아니었기 때문에 개발에 어려움이 많았는데, 현재는 Spring Boot덕분에 이렇게 쉽게 웹 Application을 만들 수 있게 되었습니다. 하지만 추상화 정도가 올라간만큼 개발자 입장에서 Spring core를 손댈 일이 없기 때문에 원리를 모르고 사용하게 될 수 있다는 염려가 있습니다. 이렇게 되면 이슈가 발생했을 때 원인을 파악하기가 쉽지 않습니다. Spring Boot를 이용해 빠르고 생산성 높게 Spring 개발을 하지만, 동시에 Spring 내부에도 항상 관심을 가져야겠습니다.
References
- 김영한님의 인프런 강의: [스프링-입문-스프링부트](https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8)
현재 단락 (1/33)
[start.spring.io](https://start.spring.io/)에 접속하여, Java version, Project Project 관리도구, Boot version,...