SlideShare a Scribd company logo
1 of 20
Download to read offline
Spring Boot Part 2
김응주
(zard21@gmail.com)
진행 순서
• Spring Boot 소개
• 개발환경 설정
• REST API 개발
• Redis 이용하기
• OAuth 인증서버 구현
• REST API Client 구현
• GraphQL
• Spring Boot Actuator
Spring Boot
• 2013년 개발, 2014년 4월 1.0 릴리즈
• Spring 기반 애플리케이션을 빠르고 쉽게 개발
• 환경설정의 최소화를 통한 생산성 향상
• 현재 2.2.0 안정화 버전
• https://spring.io/projects/spring-boot
Spring Boot의 특징
• Embed Tomcat을 이용하여 단독실행 가능
• Starter를 통한 자동화된 설정 제공
• XML 설정이 필요 없음
• Spring Actuator를 통한 모니터링과 관리 가능
JDK 설치
•JDK 1.8.0_x 설치
•https://java.oracle.com/
•현재 설치된 Java 버전 확인
$ java --version
IntelliJ IDEA 설치
•Java Web Application 개발을 위한 IDE
•https://www.jetbrains.com/idea/
•Ultimate 버전
•유료 제품
•Java EE, Spring, Web 개발 지원
•Community 버전
•무료 제품
•기본적인 Java, Kotlin, Scala 등의 개발 지원
•프로젝트 생성 시 JAVA_HOME 지정
MySQL 설치
•데이터 처리를 위한 RDBMS
•https://dev.mysql.com/downloads/mysql
•MySQL Community Server 5.7 설치 (5.x 버전 가능)
$ mysql --version
REST API 개발
•부서와 사용자를 관리하는 REST API 개발
•Entity
•부서: department
•사용자: member
REST API 개발
•부서 관리 API
•GET /api/departments
•GET /api/departments/{id}
•GET /api/departments/name
•POST /api/departments
•PUT /api/departments/{id}
•DELETE /api/departments/{id}
REST API 개발
•사용자 관리 API
•GET /api/members
•GET /api/members/{id}
•GET /api/members/name
•POST /api/members
•PUT /api/members/{id}
•DELETE /api/members/{id}
Spring Boot 프로젝트 생성
•Spring Initializer 접속 (IntelliJ IDEA Community 버전)
•https://start.spring.io
•Maven Project
•Java Spring Boot 2.2.0
•Group, Artifact 설정
•Dependencies 추가
•Web, Lombok, JPA, MySQL
•프로젝트 생성 후 IntelliJ IDEA에서 Open
REST API 테스트
•POSTMAN
•https://www.getpostman.com
•Swagger
Custom Exception
•Custom Exception을 이용한 코드, 메시지 추가
•ErrorMsg
•DataException
•GlobalExceptionHandler
Redis 이용하기
•https://redis.io
•Remote Dictionary Server
•오픈소스 In-Memory Key-Value 데이터 스토어
•spring-boot-starter-data-redis
•redis.clients.jedis
•Redis를 이용하여 사원번호 시퀀스 생성
OAuth 인증서버 구현
•Spring Security를 이용한 OAuth2 인증서버 구현
•Bearer Authentication을 이용한 인증
•Access Token을 이용한 API 접근
•JdbcTokenStore를 이용하여 데이터베이스에 Token 저장
•https://github.com/mac2me/spring-oauth-server
REST API Client 구현
•RestTemplate을 이용한 API Client
•Access Token 받기
•Access Token을 이용한 API 접근
•OpenFeign
GraphQL
•페이스북이 개발한 애플리케이션 레이어 쿼리 언어
•클라이언트가 쿼리를 이용하여 필요한 정보를 서버에 요청
•graphql-spring-boot-starter
•GraphQLQueryResolver 구현
Spring Boot Actuator
•Spring Boot 기반 애플리케이션 및 서버를 모니터링할 수 있는 모듈
•별도 모듈 개발 없이 Endpoint를 통해 접근하여 확인
•/health
•/bean
•/info
•/trace
•JMX와 JConsole을 이용한 모니터링도 가능
애플리케이션 배포
•Maven 설치
•https://maven.apache.org
•brew install maven (Mac)
•Spring Boot 프로젝트 홈 디렉터리 이동
$ mvn package (-Dmaven.test.skip=true)
•target 디렉터리 이동
$ java -jar [jar 파일명]
•Jenkins를 이용한 배포 자동화
Q & A
e-mail: zard21@gmail.com

More Related Content

What's hot

PWA (Progressive Web Apps)
PWA (Progressive Web Apps)PWA (Progressive Web Apps)
PWA (Progressive Web Apps)유 성민
 
Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1SeungHa Eom
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!SangHoon Han
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기SungChanHwang
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureYoonsung Jung
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현NAVER Engineering
 
Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Jonathan Jeon
 
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Chiung Choi
 
SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션DoHyun Jung
 
Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)jungkees
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs PrerenderChangwan Jun
 
Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Byeong-hak An
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...Amazon Web Services Korea
 

What's hot (20)

PWA (Progressive Web Apps)
PWA (Progressive Web Apps)PWA (Progressive Web Apps)
PWA (Progressive Web Apps)
 
Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
 
1.develop environment
1.develop environment1.develop environment
1.develop environment
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5Hybrid App Platform - HyWAI 3.5
Hybrid App Platform - HyWAI 3.5
 
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
 
SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션SOSCON2015 SI이노베이션
SOSCON2015 SI이노베이션
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Vue SSR vs Prerender
Vue SSR vs PrerenderVue SSR vs Prerender
Vue SSR vs Prerender
 
Overview
OverviewOverview
Overview
 
Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
DevOps Demo
DevOps DemoDevOps Demo
DevOps Demo
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
 

Similar to Spring Boot 기초 코드랩 (2019-10-26)

02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)Opennaru, inc.
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerKyung Koo Yoon
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Choonghyun Yang
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)NAVER D2
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)Amazon Web Services Korea
 
소셜 네트워크 앱 개발
소셜 네트워크 앱 개발소셜 네트워크 앱 개발
소셜 네트워크 앱 개발Kenu, GwangNam Heo
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)완철 김
 

Similar to Spring Boot 기초 코드랩 (2019-10-26) (20)

okspring3x
okspring3xokspring3x
okspring3x
 
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control Container
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
 
소셜 네트워크 앱 개발
소셜 네트워크 앱 개발소셜 네트워크 앱 개발
소셜 네트워크 앱 개발
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 

More from 양재동 코드랩

2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션양재동 코드랩
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점양재동 코드랩
 
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션양재동 코드랩
 
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례양재동 코드랩
 
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)양재동 코드랩
 
2016 W3C Conference #4 : ANGULAR + ES6
2016 W3C Conference #4 : ANGULAR + ES62016 W3C Conference #4 : ANGULAR + ES6
2016 W3C Conference #4 : ANGULAR + ES6양재동 코드랩
 
2016 W3C Conference #2 : VANILA JS로 개발하기
2016 W3C Conference #2 : VANILA JS로 개발하기2016 W3C Conference #2 : VANILA JS로 개발하기
2016 W3C Conference #2 : VANILA JS로 개발하기양재동 코드랩
 
2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래양재동 코드랩
 

More from 양재동 코드랩 (8)

2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
2016 W3C Conference #9 : 컨테이너와 웹 어플리케이션
 
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
2016 W3C Conference #8 : IONIC으로 하이브리드 앱 개발하기, 사례와 시사점
 
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션
2016 W3C Conference #7 : Electron, 웹 기술로 담아내는 데스크톱 애플리케이션
 
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례
2016 W3C Conference #6 : ReactiveX + Meteor 종단간 암호화 구현 사례
 
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)
2016 W3C Conference #5 : UNIVERSAL RENDERING (React.JS 중심)
 
2016 W3C Conference #4 : ANGULAR + ES6
2016 W3C Conference #4 : ANGULAR + ES62016 W3C Conference #4 : ANGULAR + ES6
2016 W3C Conference #4 : ANGULAR + ES6
 
2016 W3C Conference #2 : VANILA JS로 개발하기
2016 W3C Conference #2 : VANILA JS로 개발하기2016 W3C Conference #2 : VANILA JS로 개발하기
2016 W3C Conference #2 : VANILA JS로 개발하기
 
2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래2016 W3C Conference #1 : 웹 개발의 현재와 미래
2016 W3C Conference #1 : 웹 개발의 현재와 미래
 

Spring Boot 기초 코드랩 (2019-10-26)

  • 1. Spring Boot Part 2 김응주 (zard21@gmail.com)
  • 2. 진행 순서 • Spring Boot 소개 • 개발환경 설정 • REST API 개발 • Redis 이용하기 • OAuth 인증서버 구현 • REST API Client 구현 • GraphQL • Spring Boot Actuator
  • 3. Spring Boot • 2013년 개발, 2014년 4월 1.0 릴리즈 • Spring 기반 애플리케이션을 빠르고 쉽게 개발 • 환경설정의 최소화를 통한 생산성 향상 • 현재 2.2.0 안정화 버전 • https://spring.io/projects/spring-boot
  • 4. Spring Boot의 특징 • Embed Tomcat을 이용하여 단독실행 가능 • Starter를 통한 자동화된 설정 제공 • XML 설정이 필요 없음 • Spring Actuator를 통한 모니터링과 관리 가능
  • 5. JDK 설치 •JDK 1.8.0_x 설치 •https://java.oracle.com/ •현재 설치된 Java 버전 확인 $ java --version
  • 6. IntelliJ IDEA 설치 •Java Web Application 개발을 위한 IDE •https://www.jetbrains.com/idea/ •Ultimate 버전 •유료 제품 •Java EE, Spring, Web 개발 지원 •Community 버전 •무료 제품 •기본적인 Java, Kotlin, Scala 등의 개발 지원 •프로젝트 생성 시 JAVA_HOME 지정
  • 7. MySQL 설치 •데이터 처리를 위한 RDBMS •https://dev.mysql.com/downloads/mysql •MySQL Community Server 5.7 설치 (5.x 버전 가능) $ mysql --version
  • 8. REST API 개발 •부서와 사용자를 관리하는 REST API 개발 •Entity •부서: department •사용자: member
  • 9. REST API 개발 •부서 관리 API •GET /api/departments •GET /api/departments/{id} •GET /api/departments/name •POST /api/departments •PUT /api/departments/{id} •DELETE /api/departments/{id}
  • 10. REST API 개발 •사용자 관리 API •GET /api/members •GET /api/members/{id} •GET /api/members/name •POST /api/members •PUT /api/members/{id} •DELETE /api/members/{id}
  • 11. Spring Boot 프로젝트 생성 •Spring Initializer 접속 (IntelliJ IDEA Community 버전) •https://start.spring.io •Maven Project •Java Spring Boot 2.2.0 •Group, Artifact 설정 •Dependencies 추가 •Web, Lombok, JPA, MySQL •프로젝트 생성 후 IntelliJ IDEA에서 Open
  • 13. Custom Exception •Custom Exception을 이용한 코드, 메시지 추가 •ErrorMsg •DataException •GlobalExceptionHandler
  • 14. Redis 이용하기 •https://redis.io •Remote Dictionary Server •오픈소스 In-Memory Key-Value 데이터 스토어 •spring-boot-starter-data-redis •redis.clients.jedis •Redis를 이용하여 사원번호 시퀀스 생성
  • 15. OAuth 인증서버 구현 •Spring Security를 이용한 OAuth2 인증서버 구현 •Bearer Authentication을 이용한 인증 •Access Token을 이용한 API 접근 •JdbcTokenStore를 이용하여 데이터베이스에 Token 저장 •https://github.com/mac2me/spring-oauth-server
  • 16. REST API Client 구현 •RestTemplate을 이용한 API Client •Access Token 받기 •Access Token을 이용한 API 접근 •OpenFeign
  • 17. GraphQL •페이스북이 개발한 애플리케이션 레이어 쿼리 언어 •클라이언트가 쿼리를 이용하여 필요한 정보를 서버에 요청 •graphql-spring-boot-starter •GraphQLQueryResolver 구현
  • 18. Spring Boot Actuator •Spring Boot 기반 애플리케이션 및 서버를 모니터링할 수 있는 모듈 •별도 모듈 개발 없이 Endpoint를 통해 접근하여 확인 •/health •/bean •/info •/trace •JMX와 JConsole을 이용한 모니터링도 가능
  • 19. 애플리케이션 배포 •Maven 설치 •https://maven.apache.org •brew install maven (Mac) •Spring Boot 프로젝트 홈 디렉터리 이동 $ mvn package (-Dmaven.test.skip=true) •target 디렉터리 이동 $ java -jar [jar 파일명] •Jenkins를 이용한 배포 자동화
  • 20. Q & A e-mail: zard21@gmail.com