티스토리 뷰

반응형

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 포트로 실행되었다는 정보도 출력되고 있습니다.

웹브라우져를 통해 출력된 결과는 직접 확인해보시면 됩니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
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
글 보관함