SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
스프링 부트 개요 및 HelloWorld 따라하기
www.topcredu.co.kr
1.2.1. Spring Boot
기본적인 프로젝트 스캐폴딩 도구로 빠른개발을 위한 스프링 프레임워크 서브 프로젝트 중에
하나인 S p r i n g B o o t 를 사용하겠습니다. 스프링 부트는 C o n v e n t i o n
o v e r C o n f i g u r a t i o n 개념을 적용하여 개발자가 처리해야 하는 반복적인 성격의
설정작업을 대신 수행하여 개발자의 수고를 덜어주는 기술입니다.
최근 개발 초기단계에서부터 코드작성을 하지는 않습니다. 처음부터 코드를 작성하면 나중에
소스 코드 덩치가 커지거나 협업을 해야 하거나 배포를 해야 할 때 관리상의 문제가 많이
생긴다는 것을 개발자들은 이미 경험으로 알고 있기 때문입니다. 그러한 이유로 코드를
작성하기 전에 먼저 코드, 리소스, 디펜던시, 연동환경 및 테스트를 거친 후 배포작업을 미리
염두에 두고 구조적으로 프로젝트를 구분하는 스캐폴딩 작업을 선행합니다.
프로젝트 관점에서 살펴보면 실제 코드를 작성하기 전에 해야 할 여러 설정 작업들이 도출
됩니다. 스프링부트는 여러 설정작업들 중 개발자를 대신해 관습을 적용하여 자동화 할 수 있는
부분들을 제공하는 기술로써, 개발자의 수고를 덜어 보다 빠른 개발이 진행될 수 있도록
해줍니다.
여러분이 Q u e r y d s l 학습에 집중할 수 있도록 스프링 부트를 스캐폴딩 툴로
사용하겠습니다.
프로젝트 생성
먼저 스프링 부트에 익숙해지기 위해서 간단한 프로젝트를 하나 만들어 보겠습니다. 전통적인
방법에 따라 브라우저가 서버에 요청하면 " H e l l o Wo r l d " 메시지를 브라우저에게
보내주는 웹서비스를 만들어 보겠습니다.
File > New > Spring Starter Project
프로젝트명: chapter1-1
화면의 정보를 살펴봅니다. M a v e n 을 디펜던시 및 빌드 도구로 사용하고 J a r 로
패키징해서 배포합니다. 자바버전은 1 . 8 이고 프로젝트 구성 시 패키지가
c o m . e x a m p l e 로 만들어진다는 것을 알 수 있습니다. 기본 설정을 그대로 두고
" N e x t " 버튼을 클릭합니다.
디펜던시 선택
다음 화면에서 왼쪽부분 ▶ 대분류 메뉴를 클릭하면 선택할 수 있는 상세 메뉴가 표시됩니다.
1
2
선택 디펜던시 : Web
" F i n i s h " 버튼을 눌러서 스프링 부트로 프로젝트를 생성하는 작업을 마칩니다.
처음에는 로컬 저장소의 디펜던시들이 없을것이므로 첫 프로젝트는 생성완료까지 시간이 다소
걸릴 수 있습니다.
디펜던시 확인
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
3
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
스프링 부트는 w e b 개발의 필요한 여러 디펜던시들을 하나의 대표 디펜던시 " s p r i n g -
b o o t - s t a r t e r - w e b " 로 한번에 모두 설정할 수 있게 해 줍니다. 더불어
디펜던시들의 버전관리도 스프링 부트가 < p a r e n t > 태그설정으로 직접 관리하므로 따로
명기할 필요가 없습니다. 스프링 부트가 디펜던시들의 버전을 관리함으로써 더 이상 개발자가
디펜던시의 충돌현상으로 머리 아플 일은 없을 것입니다.
<artifactId>spring-boot-starter-test</artifactId>
개발 시 테스트는 항상 수행되어야 하는 업무이므로 자동으로 테스트 디펜던시가 추가됩니다.
<artifactId>spring-boot-maven-plugin</artifactId>
M a v e n 이 빌드작업을 수행함으로써 메이븐에서 스프링 부트를 다룰 수 있는 플러그인이
자동으로 추가되었습니다.
Dependency Hierarchy
p o m . x m l 의 D e p e n d e n c y H i e r a r c h y 화면을 보면 s p r i n g -
b o o t - s t a r t e r - w e b , s p r i n g - b o o t - s t a r t e r - t e s t 2 개의
대표 디펜던시 밑으로 해당 개발 카테고리에 필요한 수십 개의 디펜던시들이 설정되어 있는 것을
알 수 있습니다. s p r i n g - c o r e 디펜던시 옆에 버전 부분을 살펴보면 사용하는 스프링
버전은 4 . 3 . 3 . R E L E A S E 라는 것을 알 수 있습니다.
프로젝트 환경설정
스프링 부트는 기본적으로 X M L 파일을 사용하지 않습니다. 스프링 부트는 J a v a -
c o n f i g 와 어노테이션 방식의 설정을 선호합니다. 스프링 부트는
a p p l i c a t i o n . p r o p e r t i e s 파일이나 a p p l i c a t i o n . y m l
파일을 자주 사용하는 기술의 설정작업을 위한 설정파일로 제공합니다.
application.properties
프로퍼티 파일에서 # 은 주석기호 입니다.
#java -jar yourapp.jar -Dserver.contextPath=/your/path/here
server.contextPath=/chapter1-1
server.port=8080
s e r v e r . p o r t 를 지정하지 않으면 디폴트로 8 0 8 0 포트를 사용하므로 위 설정은
하든 안하든 결과가 같습니다. s e r v e r . c o n t e x t P a t h 를 지정했으므로
웹서비스에 접속할 때 사용할 U R L 은 다음처럼 컨텍스트 패스까지 사용해야 합니다.
http://localhost:8080/chapter-1
컨텍스트 패스를 명시적으로 설정하지 않는다면 도메인만 사용해서 접근해야 합니다. J a r
파일을 사용하여 기동 시 " -
D s e r v e r . c o n t e x t P a t h = / y o u r / p a t h / h e r e " 옵션을 사용하여
4
컨텍스트 패스를 변경할 수 있고 웹서버의 포트를 변경하고자 한다면
" - D s e r v e r . p o r t = 8 0 9 0 " 처럼 사용하면 됩니다.
Presentation Layer
사용자의 요청 U R L 을 처리할 U R L H a n d l e r 인 컨트롤러 클래스를 작성합니다.
스프링 프레임워크를 사용한다면 개발자는 U R L 에 따라 대응하는 메소드를 작성하는 작업에만
신경쓰고 나머지는 모두 스프링이 미리 만들어 놓은 로직을 그대로 이용하는 방식으로 개발이
진행됩니다. 여기서는 컨트롤러가 환영메시지 문자열을 브라우저에게 전달하는 기능을
추가합니다.
HomeRestController.java
package com.example.common.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeRestController {
@RequestMapping("/")
public String home(){
return "welcome home";
}
}
컨트롤러 클래스에 @R e s t C o n t r o l l e r 어노테이션을 붙였으므로 해당 클래스는 빈
컨테이너에 등록되고 U R L H a n d l e r 역할을 수행합니다.
@R e q u e s t M a p p i n g ( " / " ) 어노테이션 설정으로 서버에 루트( " / " ) 로 접근
시 " w e l c o m e h o m e " 문자열을 브라우저에 전달합니다.
테스트
스프링 부트로 프로젝트 생성 시 자동으로 만들어진 클래스
C h a p t e r 1 1 A p p l i c a t i o n . j a v a 파일을 살펴보면 자바의 기동메소드인
m a i n 메소드가 존재합니다.
이 m a i n 메소드가 전체 애플리케이션의 엔트리 포인트입니다. 즉 프로젝트 시작을 담당하는
클래스가 노출되어 있으므로 웹서비스 시작 시 수행이 필요한 로직을 여기에 추가할 수
있습니다. 부트( B o o t ) 라는 용어 자체가 시작이라는 의미를 갖고 있습니다.
" R u n A s > J a v a A p p l i c a t i o n " 메뉴를 선택하여 웹서비스 프로그램을
기동합니다. 자바의 m a i n 기동 메소드를 사용해 커다란 애플리케이션을 부트하는
것입니다.
h t t p : / / l o c a l h o s t : 8 0 8 0 / c h a p t e r 1 - 1 / 으로 접근하여 다음
메시지를 볼 수 있는지 확인합니다.
5
6
실제로 개발자가 작업한 부분은 a p p l i c a t i o n . p r o p e r t i e s 와
H o m e R e s t C o n t r o l l e r . j a v a 가 전부이므로 스프링 부트로 개발하면 빠르게
웹 서비스를 구축할 수 있다는 것을 알 수 있습니다.
부트 프로젝트를 기동하는 방법이 하나 더 있습니다.
" 프로젝트 선택 > 마우스 오른쪽 클릭 > R u n A s > S p r i n g B o o t A p p "
메뉴를 선택해서 부트 프로젝트를 시작할 수도 있습니다.
JSP 연동
최근에는 J S P 를 대체할 수 있는 기술들이 많이 나와 있어서 J S P 사용비율이 점점 떨어지고
있는 추세입니다. 그러나 J S P 가 자바표준 H T M L 템플릿 엔진임에는 틀림이 없으므로
학습적인 차원에서는 여전히 중요하다고 볼 수 있습니다.
스프링 부트에서 J S P 연동작업을 해 보도록 하겠습니다.
pom.xml
다음 디펜던시 2 개를 설정파일에 추가합니다. 버전은 스프링 부트 프로젝트인 경우 명시하지
않아도 됩니다.
<!-- JSP 를 처리한다. -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- JSP 내에서 JSTL 확장 태그 라이브러리를 사용한다. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
다음 작업으로 J S P 뷰와의 연동처리를 위한 컨트롤러를 하나 추가합니다.
HomeController.java
package com.example.common.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home(){
return "welcome";
}
}
7
뷰의 실제 위치는 웹 루트 밑으로 여러 폴더들을 두고 그 아래에 배치하는 것이 일반적입니다.
따라서 컨트롤러에서 리턴하는 뷰의 이름은 컨텍스트 루트 다음 패스부터 v i e w . j s p 까지
명기해야 합니다. 이를 뷰의 이름만으로 짧게 리턴해도 되도록 스프링 컨트롤러가 리턴하는
문자열로 된 뷰이름을 가지고 뷰의 위치를 뷰 리졸버( V i e w r e s o l v e r ) 에게
문의하면 뷰의 위치를 가리키는 문자열을 완성하여 알려주는 역할을 수행하는 뷰
리졸버( V i e w r e s o l v e r ) 설정을 추가합니다.
application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
하나의 U R L 요청에 대응하는 메소드가 두 개인 경우, 어느 메소드가 처리해야 할지 판단할
수 없습니다. 현재까지 작업으로 보면 H o m e C o n t r o l l e r 와
H o m e R e s t C o n t r o l l e r 에 각각 루트( " / " ) 요청에 대응하는 코드가
설정되어 있습니다. 따라서 어느 하나를 수정해야 합니다.
기존 H o m e R e s t C o n t r o l l e r . j a v a 파일을 수정 합니다.
HomeRestController.java
package com.example.common.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeRestController {
@RequestMapping(value={"/"}, params="plain")
public String homeForPlain(){
return "welcome home";
}
@RequestMapping(value={"/"}, params="json")
public String homeForJson(){
return "{"message" : "welcome home"}";
}
}
스프링의 강력한 U R L 매핑 기능 중에 전달되는 파라미터에 따라서 대응하는 메소드를 지정할
수 있는 기능을 사용합니다.
다음 작업으로 뷰에 역할을 수행하는 J S P 파일을 작성합니다.
welcome.jsp
파일위치 : src/main/webapp/WEB-INF/jsp/welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome Home</title>
</head>
<body>
<h2>welcome.jsp</h2>
</body>
</html>
테스트
컨텍스트 패스까지 U R L 로 사용해서 서버에 접속하면 J S P 파일과 연동됩니다.
이 요청은 @R e q u e s t M a p p i n g ( " / " ) 설정이 붙어 있는 메소드가 처리합니다.
파라미터로 " j s o n " 문자열을 추가하면 결과로 J S O N 포맷의 문자열을 받습니다.
@R e q u e s t M a p p i n g ( v a l u e = { " / " } , p a r a ms = " j s o n " )
설정이 붙어 있는 메소드가 처리합니다.
파라미터로 " p l a i n " 문자열을 사용하면 결과로 평범한 문자열을 받습니다.
@R e q u e s t M a p p i n g ( v a l u e = { " / " } , p a r a ms = " p l a i n " )
설정이 붙어 있는 메소드가 처리합니다.
지금까지 스프링 부트로 프로젝트를 만들어서 사용하는 방법을 간단히 살펴 보았습니다.
다음으로 데이터베이스 처리기술의 발전역사를 코드를 살펴보면서 설명하겠습니다.
"Let there be code!"
8

Contenu connexe

Tendances

Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1성일 한
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅NAVER D2
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2성일 한
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Woonduk-Kang
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment SettingKwangyoun Jung
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3성일 한
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Tendances (20)

Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
 
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
(스프링 초보자를 위한)스프링 DI관련 어노테이션,자동스캐닝 컴포넌트(Spring Framework Auto-Scanning Component)
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
 
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
 
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
스프링컨트롤러예외처리,@ExceptionHandler, @ControllerAdvice
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(스프링교육/마이바티스교육학원추천_탑크리에듀)#10.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)자바모델 클래스에 날개를달자_롬복(Lombok)
자바모델 클래스에 날개를달자_롬복(Lombok)
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[국비지원교육/재직자/실업자환급교육/IT실무학원추천/스프링교육추천]#5.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
 
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로  만들면서 비교해보자.
(스프링JDBC와 Spring Data JPA비교)Spring JDBC와 JPA를 간단한 CRUD 예제로 만들면서 비교해보자.
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 

Similaire à (스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012Daum DNA
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Ted Won
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개 SuHyun Jeon
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계Jinho Yoo
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thTed Won
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Sourcecho hyun jong
 
Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4Usys4u
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드Sukjoon Kim
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영Nalee Jang
 

Similaire à (스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기 (20)

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 
RHQ 공감 Seminar 6th
RHQ 공감 Seminar 6thRHQ 공감 Seminar 6th
RHQ 공감 Seminar 6th
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
Implementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4UImplementing_AOP_in_Spring_SYS4U
Implementing_AOP_in_Spring_SYS4U
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 

Plus de 탑크리에듀(구로디지털단지역3번출구 2분거리)

[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Plus de 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...2. xamarin.android  2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
2. xamarin.android 2.5.3 xamarin.android .aar binding(안드로이드 .aar file을 자마린 바...
 
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
유니티,Unity 엔진을 활용한 VR/AR 콘텐츠 개발 _사물인터넷(IoT) 네크워크 프로그래밍
 

(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기

  • 1. 스프링 부트 개요 및 HelloWorld 따라하기 www.topcredu.co.kr 1.2.1. Spring Boot 기본적인 프로젝트 스캐폴딩 도구로 빠른개발을 위한 스프링 프레임워크 서브 프로젝트 중에 하나인 S p r i n g B o o t 를 사용하겠습니다. 스프링 부트는 C o n v e n t i o n o v e r C o n f i g u r a t i o n 개념을 적용하여 개발자가 처리해야 하는 반복적인 성격의 설정작업을 대신 수행하여 개발자의 수고를 덜어주는 기술입니다. 최근 개발 초기단계에서부터 코드작성을 하지는 않습니다. 처음부터 코드를 작성하면 나중에 소스 코드 덩치가 커지거나 협업을 해야 하거나 배포를 해야 할 때 관리상의 문제가 많이 생긴다는 것을 개발자들은 이미 경험으로 알고 있기 때문입니다. 그러한 이유로 코드를 작성하기 전에 먼저 코드, 리소스, 디펜던시, 연동환경 및 테스트를 거친 후 배포작업을 미리 염두에 두고 구조적으로 프로젝트를 구분하는 스캐폴딩 작업을 선행합니다. 프로젝트 관점에서 살펴보면 실제 코드를 작성하기 전에 해야 할 여러 설정 작업들이 도출 됩니다. 스프링부트는 여러 설정작업들 중 개발자를 대신해 관습을 적용하여 자동화 할 수 있는 부분들을 제공하는 기술로써, 개발자의 수고를 덜어 보다 빠른 개발이 진행될 수 있도록 해줍니다. 여러분이 Q u e r y d s l 학습에 집중할 수 있도록 스프링 부트를 스캐폴딩 툴로 사용하겠습니다.
  • 2. 프로젝트 생성 먼저 스프링 부트에 익숙해지기 위해서 간단한 프로젝트를 하나 만들어 보겠습니다. 전통적인 방법에 따라 브라우저가 서버에 요청하면 " H e l l o Wo r l d " 메시지를 브라우저에게 보내주는 웹서비스를 만들어 보겠습니다. File > New > Spring Starter Project 프로젝트명: chapter1-1 화면의 정보를 살펴봅니다. M a v e n 을 디펜던시 및 빌드 도구로 사용하고 J a r 로 패키징해서 배포합니다. 자바버전은 1 . 8 이고 프로젝트 구성 시 패키지가 c o m . e x a m p l e 로 만들어진다는 것을 알 수 있습니다. 기본 설정을 그대로 두고 " N e x t " 버튼을 클릭합니다. 디펜던시 선택 다음 화면에서 왼쪽부분 ▶ 대분류 메뉴를 클릭하면 선택할 수 있는 상세 메뉴가 표시됩니다. 1 2
  • 3. 선택 디펜던시 : Web " F i n i s h " 버튼을 눌러서 스프링 부트로 프로젝트를 생성하는 작업을 마칩니다. 처음에는 로컬 저장소의 디펜던시들이 없을것이므로 첫 프로젝트는 생성완료까지 시간이 다소 걸릴 수 있습니다. 디펜던시 확인 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>boot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> 3
  • 4. <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 스프링 부트는 w e b 개발의 필요한 여러 디펜던시들을 하나의 대표 디펜던시 " s p r i n g - b o o t - s t a r t e r - w e b " 로 한번에 모두 설정할 수 있게 해 줍니다. 더불어 디펜던시들의 버전관리도 스프링 부트가 < p a r e n t > 태그설정으로 직접 관리하므로 따로 명기할 필요가 없습니다. 스프링 부트가 디펜던시들의 버전을 관리함으로써 더 이상 개발자가 디펜던시의 충돌현상으로 머리 아플 일은 없을 것입니다. <artifactId>spring-boot-starter-test</artifactId> 개발 시 테스트는 항상 수행되어야 하는 업무이므로 자동으로 테스트 디펜던시가 추가됩니다. <artifactId>spring-boot-maven-plugin</artifactId> M a v e n 이 빌드작업을 수행함으로써 메이븐에서 스프링 부트를 다룰 수 있는 플러그인이 자동으로 추가되었습니다.
  • 5. Dependency Hierarchy p o m . x m l 의 D e p e n d e n c y H i e r a r c h y 화면을 보면 s p r i n g - b o o t - s t a r t e r - w e b , s p r i n g - b o o t - s t a r t e r - t e s t 2 개의 대표 디펜던시 밑으로 해당 개발 카테고리에 필요한 수십 개의 디펜던시들이 설정되어 있는 것을 알 수 있습니다. s p r i n g - c o r e 디펜던시 옆에 버전 부분을 살펴보면 사용하는 스프링 버전은 4 . 3 . 3 . R E L E A S E 라는 것을 알 수 있습니다. 프로젝트 환경설정 스프링 부트는 기본적으로 X M L 파일을 사용하지 않습니다. 스프링 부트는 J a v a - c o n f i g 와 어노테이션 방식의 설정을 선호합니다. 스프링 부트는 a p p l i c a t i o n . p r o p e r t i e s 파일이나 a p p l i c a t i o n . y m l 파일을 자주 사용하는 기술의 설정작업을 위한 설정파일로 제공합니다. application.properties 프로퍼티 파일에서 # 은 주석기호 입니다. #java -jar yourapp.jar -Dserver.contextPath=/your/path/here server.contextPath=/chapter1-1 server.port=8080 s e r v e r . p o r t 를 지정하지 않으면 디폴트로 8 0 8 0 포트를 사용하므로 위 설정은 하든 안하든 결과가 같습니다. s e r v e r . c o n t e x t P a t h 를 지정했으므로 웹서비스에 접속할 때 사용할 U R L 은 다음처럼 컨텍스트 패스까지 사용해야 합니다. http://localhost:8080/chapter-1 컨텍스트 패스를 명시적으로 설정하지 않는다면 도메인만 사용해서 접근해야 합니다. J a r 파일을 사용하여 기동 시 " - D s e r v e r . c o n t e x t P a t h = / y o u r / p a t h / h e r e " 옵션을 사용하여 4
  • 6. 컨텍스트 패스를 변경할 수 있고 웹서버의 포트를 변경하고자 한다면 " - D s e r v e r . p o r t = 8 0 9 0 " 처럼 사용하면 됩니다. Presentation Layer 사용자의 요청 U R L 을 처리할 U R L H a n d l e r 인 컨트롤러 클래스를 작성합니다. 스프링 프레임워크를 사용한다면 개발자는 U R L 에 따라 대응하는 메소드를 작성하는 작업에만 신경쓰고 나머지는 모두 스프링이 미리 만들어 놓은 로직을 그대로 이용하는 방식으로 개발이 진행됩니다. 여기서는 컨트롤러가 환영메시지 문자열을 브라우저에게 전달하는 기능을 추가합니다. HomeRestController.java package com.example.common.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HomeRestController { @RequestMapping("/") public String home(){ return "welcome home"; } } 컨트롤러 클래스에 @R e s t C o n t r o l l e r 어노테이션을 붙였으므로 해당 클래스는 빈 컨테이너에 등록되고 U R L H a n d l e r 역할을 수행합니다. @R e q u e s t M a p p i n g ( " / " ) 어노테이션 설정으로 서버에 루트( " / " ) 로 접근 시 " w e l c o m e h o m e " 문자열을 브라우저에 전달합니다. 테스트 스프링 부트로 프로젝트 생성 시 자동으로 만들어진 클래스 C h a p t e r 1 1 A p p l i c a t i o n . j a v a 파일을 살펴보면 자바의 기동메소드인 m a i n 메소드가 존재합니다. 이 m a i n 메소드가 전체 애플리케이션의 엔트리 포인트입니다. 즉 프로젝트 시작을 담당하는 클래스가 노출되어 있으므로 웹서비스 시작 시 수행이 필요한 로직을 여기에 추가할 수 있습니다. 부트( B o o t ) 라는 용어 자체가 시작이라는 의미를 갖고 있습니다. " R u n A s > J a v a A p p l i c a t i o n " 메뉴를 선택하여 웹서비스 프로그램을 기동합니다. 자바의 m a i n 기동 메소드를 사용해 커다란 애플리케이션을 부트하는 것입니다. h t t p : / / l o c a l h o s t : 8 0 8 0 / c h a p t e r 1 - 1 / 으로 접근하여 다음 메시지를 볼 수 있는지 확인합니다. 5 6
  • 7. 실제로 개발자가 작업한 부분은 a p p l i c a t i o n . p r o p e r t i e s 와 H o m e R e s t C o n t r o l l e r . j a v a 가 전부이므로 스프링 부트로 개발하면 빠르게 웹 서비스를 구축할 수 있다는 것을 알 수 있습니다. 부트 프로젝트를 기동하는 방법이 하나 더 있습니다. " 프로젝트 선택 > 마우스 오른쪽 클릭 > R u n A s > S p r i n g B o o t A p p " 메뉴를 선택해서 부트 프로젝트를 시작할 수도 있습니다. JSP 연동 최근에는 J S P 를 대체할 수 있는 기술들이 많이 나와 있어서 J S P 사용비율이 점점 떨어지고 있는 추세입니다. 그러나 J S P 가 자바표준 H T M L 템플릿 엔진임에는 틀림이 없으므로 학습적인 차원에서는 여전히 중요하다고 볼 수 있습니다. 스프링 부트에서 J S P 연동작업을 해 보도록 하겠습니다. pom.xml 다음 디펜던시 2 개를 설정파일에 추가합니다. 버전은 스프링 부트 프로젝트인 경우 명시하지 않아도 됩니다. <!-- JSP 를 처리한다. --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- JSP 내에서 JSTL 확장 태그 라이브러리를 사용한다. --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> 다음 작업으로 J S P 뷰와의 연동처리를 위한 컨트롤러를 하나 추가합니다. HomeController.java package com.example.common.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomeController { @RequestMapping("/") public String home(){ return "welcome"; } } 7
  • 8. 뷰의 실제 위치는 웹 루트 밑으로 여러 폴더들을 두고 그 아래에 배치하는 것이 일반적입니다. 따라서 컨트롤러에서 리턴하는 뷰의 이름은 컨텍스트 루트 다음 패스부터 v i e w . j s p 까지 명기해야 합니다. 이를 뷰의 이름만으로 짧게 리턴해도 되도록 스프링 컨트롤러가 리턴하는 문자열로 된 뷰이름을 가지고 뷰의 위치를 뷰 리졸버( V i e w r e s o l v e r ) 에게 문의하면 뷰의 위치를 가리키는 문자열을 완성하여 알려주는 역할을 수행하는 뷰 리졸버( V i e w r e s o l v e r ) 설정을 추가합니다. application.properties spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp 하나의 U R L 요청에 대응하는 메소드가 두 개인 경우, 어느 메소드가 처리해야 할지 판단할 수 없습니다. 현재까지 작업으로 보면 H o m e C o n t r o l l e r 와 H o m e R e s t C o n t r o l l e r 에 각각 루트( " / " ) 요청에 대응하는 코드가 설정되어 있습니다. 따라서 어느 하나를 수정해야 합니다. 기존 H o m e R e s t C o n t r o l l e r . j a v a 파일을 수정 합니다.
  • 9. HomeRestController.java package com.example.common.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HomeRestController { @RequestMapping(value={"/"}, params="plain") public String homeForPlain(){ return "welcome home"; } @RequestMapping(value={"/"}, params="json") public String homeForJson(){ return "{"message" : "welcome home"}"; } } 스프링의 강력한 U R L 매핑 기능 중에 전달되는 파라미터에 따라서 대응하는 메소드를 지정할 수 있는 기능을 사용합니다. 다음 작업으로 뷰에 역할을 수행하는 J S P 파일을 작성합니다. welcome.jsp 파일위치 : src/main/webapp/WEB-INF/jsp/welcome.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Welcome Home</title> </head> <body> <h2>welcome.jsp</h2> </body> </html>
  • 10. 테스트 컨텍스트 패스까지 U R L 로 사용해서 서버에 접속하면 J S P 파일과 연동됩니다. 이 요청은 @R e q u e s t M a p p i n g ( " / " ) 설정이 붙어 있는 메소드가 처리합니다. 파라미터로 " j s o n " 문자열을 추가하면 결과로 J S O N 포맷의 문자열을 받습니다. @R e q u e s t M a p p i n g ( v a l u e = { " / " } , p a r a ms = " j s o n " ) 설정이 붙어 있는 메소드가 처리합니다. 파라미터로 " p l a i n " 문자열을 사용하면 결과로 평범한 문자열을 받습니다. @R e q u e s t M a p p i n g ( v a l u e = { " / " } , p a r a ms = " p l a i n " ) 설정이 붙어 있는 메소드가 처리합니다. 지금까지 스프링 부트로 프로젝트를 만들어서 사용하는 방법을 간단히 살펴 보았습니다. 다음으로 데이터베이스 처리기술의 발전역사를 코드를 살펴보면서 설명하겠습니다. "Let there be code!" 8