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

양재동 코드랩
양재동 코드랩양재동 코드랩
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
1 de 20

Recomendados

웹 2.0 기술 소개 (2006) por
웹 2.0 기술 소개 (2006)웹 2.0 기술 소개 (2006)
웹 2.0 기술 소개 (2006)Channy Yun
1.3K vistas88 diapositivas
Spring boot와 docker를 이용한 msa por
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa흥래 김
10.2K vistas80 diapositivas
Atlassian JIRA Plugin 및 REST API를 이용한 기능 확장 por
Atlassian JIRA Plugin 및 REST API를 이용한 기능 확장Atlassian JIRA Plugin 및 REST API를 이용한 기능 확장
Atlassian JIRA Plugin 및 REST API를 이용한 기능 확장Osc Osc
3.7K vistas30 diapositivas
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화 por
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
2.6K vistas37 diapositivas
Service Worker 를 이용한 
Offline Web Application 구현 por
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현병태 정
1.6K vistas34 diapositivas
SK플래닛_README_마이크로서비스 아키텍처로 개발하기 por
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기Lee Ji Eun
20.5K vistas47 diapositivas

Más contenido relacionado

La actualidad más candente

PWA (Progressive Web Apps) por
PWA (Progressive Web Apps)PWA (Progressive Web Apps)
PWA (Progressive Web Apps)유 성민
124 vistas25 diapositivas
Spring boot + java 에코시스템 #1 por
Spring boot + java 에코시스템 #1Spring boot + java 에코시스템 #1
Spring boot + java 에코시스템 #1SeungHa Eom
1.1K vistas17 diapositivas
이제 온라인이다! 브라우저 안으로 들어온 Visual studio! por
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!SangHoon Han
2.1K vistas54 diapositivas
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기 por
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기
[AWS Community Day 2021] AWS와 함께하는 무중단 배포 파이프라인 개선기SungChanHwang
290 vistas86 diapositivas
1.develop environment por
1.develop environment1.develop environment
1.develop environment이경주 이경주
746 vistas5 diapositivas
현실적 PWA por
현실적 PWA현실적 PWA
현실적 PWAJae Sung Park
4.6K vistas31 diapositivas

La actualidad más candente(20)

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

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

okspring3x por
okspring3xokspring3x
okspring3xKenu, GwangNam Heo
6K vistas60 diapositivas
02.JBOSS EAP7(FOR CONTAINER/CLOUD) por
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)Opennaru, inc.
8.1K vistas34 diapositivas
웹 IDE 비교 por
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
16.4K vistas76 diapositivas
Springmvc por
SpringmvcSpringmvc
SpringmvcHyungKuIm
21 vistas73 diapositivas
Source To URL Without Dockerfile por
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
299 vistas31 diapositivas
[DevOn 2013] Dynamic web proxy por
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
1.7K vistas58 diapositivas

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

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

Más de 양재동 코드랩

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

Más de 양재동 코드랩(8)

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

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