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
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을 이용한 모니터링도 가능