티스토리 뷰
Spring Boot 프로젝트를 이용해 Hello World 을 출력하는 프로그램을 만들어 보겠습니다.
1. Console 출력
SPRING INITIALIZR 에서 기본 프로젝트를 생성한 뒤 Hello World 을 출력하는 간단한 코드를 작성해보겠습니다.
아래와 같이 기본값으로 생성한 프로젝트를 준비합니다.
src/main/java/com/example/demo/ 디렉토리의 DemoApplication.java 파일이 main() 이 있는 클래스입니다.
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
당연히 main() 메서드 내에 Hello World 을 출력할 수 있도록 아래와 같이 코드를 수정합니다.
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); System.out.println("Hello World"); } }
프로그램을 수정하였다면 Maven 을 이용해 Build 을 하고 Packaging 까지 한 번에 진행하겠습니다. 테스트 코드가 기본으로 생성되어 있기 때문에 출력 시 너무 많은 로그가 출력되므로 테스트 코드는 건너띄도록 옵션을 추가했습니다.
Spring Boot 프로젝트의 root 디렉토리에서 기본으로 제공되는 Maven Wrapper 을 이용해 진행하겠습니다.
mvnw -DskipTests package
정상적으로 명령이 실행되면 target/ 디렉토리가 생성되고, Jar 파일이 생성되어 있음을 확인할 수 있습니다.
Packaging 된 Jar 파일을 실행해보겠습니다.
java -jar target/demo-0.0.1-SNAPSHOT.jar
main() 클래스에 추가한 출력 코드가 정상적으로 출력되었음을 확인할 수 있습니다.
하지만, main() 메서드에 코드를 추가하는 방법 말고도 Spring Boot 에서는 시작 시 코드를 실행할 수 있는 또다른 방법을 제공하고 있습니다. ApplicationRunner 와 CommandLineRunner 인터페이스인데, @Component 애노테이션이 선언된 클래스에 인터페이스를 상속받아 run() 메서드를 @Override 하면 됩니다.
package com.example.demo; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println("Hello Wolrd CommnadLineRunner"); } }
위에서와 마찬가지로 Packaging 을 한 뒤 Jar 파일을 실행해보겠습니다.
메세지가 정상적으로 출력되는 것을 확인할 수 있습니다.
main() 메서드는 프로그램 실행을 위해 한 곳에서만 구현할 수 있고 static 인데 반해, CommandLineRunner 는 static 이 아니기 때문에 사용하기 더 편리합니다.
2. Web 출력
웹사이트를 구축하기 위해 SPRING INITIALIZR 에서 Web 의존성을 추가해 프로젝트를 새로 생성해서 MVC 패턴을 이용해 Hello World 을 출력하는 간단한 예제를 만들어 보겠습니다.
위의 콘솔 출력과 마찬가지로 DemoApplication.java 파일에 Controller 을 만들 수도 있지만, src/main/java/com/example/demo/ 디렉토리에 controller/ 디렉토리를 만들어 Controller 파일을 모아두는 일반적인 형태대로 예제를 구성해보았습니다.
HelloController 클래스를 아래와 같이 구현하였습니다.
package com.example.demo.controller; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Controller public class HelloController { @RequestMapping("/hello") public void hello(HttpServletResponse response) throws IOException { response.getWriter().print("Hello World"); } }
HelloController.java 파일을 추가한 뒤 앞서와 같이 Maven 으로 Packaging 한 뒤 프로그램을 실행하면 다음과 같이 로그가 출력되면서 프로그램이 종료되지 않고 대기 상태에 있게 됩니다.
로그 메세지에는 많은 정보가 출력되게 되므로 앞으로도 로그 메세지를 확인하는 것이 좋습니다. 이번 예제에서 @RequestMapping 을 이용해 /hello 을 호출할 때 화면에 문자열을 출력하도록 하였는데 이미지에서 보듯이 애노테이션을 이용해 등록한 경로가 로그에서 Mapping 되었다고 출력되는 것을 확인할 수 있습니다. 또한, tomcat 서버가 8080 포트로 실행되었다는 정보도 출력되고 있습니다.
웹브라우져를 통해 출력된 결과는 직접 확인해보시면 됩니다.
'Programming > Spring Boot 시작하기' 카테고리의 다른 글
의존성을 추가하여 템플릿(Thymeleaf) 사용 환경 구축하기 (2) | 2018.09.05 |
---|---|
application.properties 살펴보기 (0) | 2018.09.05 |
IntelliJ IDEA 에서 프로젝트 개발 환경 구성 (0) | 2018.09.04 |
IDE 프로젝트 파일 생성 (0) | 2018.09.04 |
Dependencies 선택 (0) | 2018.09.04 |
- Total
- Today
- Yesterday
- SI
- 워드프레스
- 엘지
- jooq
- 외장 WAS
- docker
- boot
- Nas
- 시니어 프로그래머
- RestTemplate
- messages.properties
- Phabricator
- KDE
- couchbase
- git
- OracleJDK
- manjaro
- proxmox
- NoSQL
- Spring
- java config
- 도입기
- 내장 WAS
- Spring Boot
- Redmine
- paging
- Spring MVC
- 클라우드플레어
- 페이징
- 프로젝트 규모
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |