[Spring Boot] Spring Boot Tutorial #1 - Hello World

[Spring Boot] Spring Boot Tutorial #1 - Hello World

Goal

  • Spring Boot 사용법 익히기
  • Spring Boot 란
  • Spring Boot 프로젝트 생성 및 빌드


들어가며

  • 이 튜토리얼은 Tutorialpoint Spring Boot을 기반으로 작 성
  • 이 튜토리얼은 자바 개발자들이 제품화할 수 있는 스프링 어플리케이션을 최소한의 구성으로 개발할 수 있도록 하기 위해 작성
  • 독자에게 Starters, Auto-configuration, Beans, Actuator 과 같은 Spring Boot의 주요 기능을 설명/실습하고 독자의 실력을 중급정도의 수준으로 끌어올리는 것을 목표로 한다.


Spring Boot란

  • 마이크로서비스를 구성하기 위한 자바 기반의 오픈소스 프레임워크
  • Spring Boot를 이용하여 단독 또는 완성도 있는 Spring 어플리케이션을 쉽게 만들 수 있다.
  • 높은 개발 생산성
  • 마이크로서비스를 개발하기 위한 쉬운 구조로 되어 있고, 엔터프라이즈 어플리케이션을 쉽게 개발할 수 있다.

[개발목적]

- Spring의 복잡한 XML 설정 생략
- 쉽게 완성도 있는 Spring 어플리케이션을 개발하기 위해서
- 어플리케이션을 쉽게 구축하기 위한 더 쉬운 방법을 제공

[특장점]

- Java Beans, XML 설정, 데이터베이스 트랜잭션 등을 유연하게 설정할 수 있다.
- 강력한 배치 처리와 REST endpoints를 관리
- 자동으로 설정. 복잡한 수동 설정 과정을 생략할 수 있다.
- Spring 어플리케이션에서 지원하는 어노테이션을 제공
- 쉬운 의존성 관리
- 서블릿 컨테이너를 내장

마이크로 서비스란?

- 개발자들이 독립적으로 서비스를 개발/배포하도록 해주는 아키텍처.
- 각 서비스는 각자의 프로세스를 갖는다. 이 프로세스는 비지니스 어플리케이션을 지원하는 경량화된 모델을 구성한다.
- 마이크로서비스는 아래와 같은 장점을 갖는다.
    * 쉬운 배포
    * 쉬운 확장성
    * 컨테이너와 호환 가능
    * 설정 최소화
    * 높은 생산성


Practice

  • Hello World 출력 Spring Boot 프로젝트

    1. Eclipse Spring Boot 프로젝트 생성

  • New -> Other… -> Spring Boot -> Spring Starter Project screenshot001 screenshot002 screenshot003


2. Maven Dependecies 추가

<!-- Application 모니터링 및 관리에 필요 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!-- 보안에 필요 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<!-- REST Endpoints 사용에 필요 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- 웹 어플리케이션을 생성에 필요 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<!--  테스트에 필요 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

screenshot004


3. Spring Boot Application 클래스 구현

  • Spring Boot 프로젝트 생성 시, 자동으로 생성
  • 반드시 메인 메소드 필요
  • Spring Boot 구동 시, 가장 먼저 실행되는 Entry Point
  • @SpringBootApplication 어노테이션 선언
    • @EnableAutoConfiguration, @ComponentScan, @SpringBootConfiguration Annotation을 포함
    • @EnableAutoConfiguration : JAR dependencies 기반으로 자동으로 application을 설정
    • @ComponentScan : 프로젝트에서 추가된 스캔될 컴포넌트를 지정
 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
32
33
34
35
package io.dorbae.springboot.tutorial;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/*****************************************************************
 * 
 * TutorialSpringbootApplication.java
 *
 *****************************************************************
 *
 * @version	0.0.0	2019-01-14 18:18:07	dorbae	최초생성
 * @since 1.0
 * @author dorbae(dorbae.io@gmail.com)
 *
 */
/*
 *  @SpringBootApplication Annotation
 *  	실행될 Spring Boot 어플리케이션의 시작 포인트
 *  	@EnableAutoConfiguration, @ComponentScan, @SpringBootConfiguration Annotation을 포함
 *  @EnableAutoConfiguration Annotation
 *  	JAR dependencies 기반으로 자동으로 application을 설정
 *  @ComponentScan Annotation
 *  	프로젝트에서 추가된 스캔될 컴포넌트를 지정
 */
@SpringBootApplication
public class TutorialSpringbootApplication {
	public static void main(String[] args) {
		SpringApplication.run(TutorialSpringbootApplication.class, args);
	}
	
	
	

}


4. REST Endpoint 클래스 구현

  • @RestController 어노테이션 선언
  • @RequstMapping 어노테이션으로 Requset URI 매핑

screenshot005

 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
package io.dorbae.springboot.tutorial.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/*****************************************************************
 * 
 * HelloController.java
 *
 *****************************************************************
 *
 * @version	0.0.0	2019-01-14 18:28:07	dorbae	최초생성
 * @since 1.0
 * @author dorbae(dorbae.io@gmail.com)
 *
 */
@RestController
public class HelloController {
	// Request URI 매핑
	@RequestMapping(value = "/hello")
	public String hello() {
		// 내용 출력
		return "Hello World";
	}
}


5. 빌드

mvn clean install

screenshot006


6. 실행

java -jar [JAR_NAME]

screenshot007


7. 브라우저에서 확인

  • http://localhost:8080/hello 로 접속

screenshot010

7.1. 로그인 페이지

  • Dependecies에 spring-boot-starter-security이 포함되어 있으면 서버 접속 시, 로그인 필요
  • Default user는 user, password는 서버 구동 시 출력

screenshot008

screenshot009

References

댓글남기기

-->