목록Backend/Spring (13)
일단 씻고 나가자
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 13. 서비스 인증과 권한 부여 회원가입 혹은 유저별 이용 구분에는 인증과 인가 등의 보안 기능이 필수이므로 이번 장에서는 보안 관련 용어, 개념 및 스프링의 보안을 담당하는 기능인 스프링 시큐리티(Spring Security)에 대해 알아본다. 단, 여태까지의 실습은 화면이 없는 REST 방식으로 진행하였기 때문에 로그인을 통한 일반적인 인증과 인가 방식이 아닌 요청마다 토큰값을 활용한 보안 기법에 대해 알아본다. 13.1 보안 용어 이해 스프링 시큐리티를 사용하기 이전에 보안과 관련된 용어를 살펴본다. 13.1.1 인증..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 12. 서버 간 통신 최근 서비스들은 마이크로서비스 아키텍쳐(Micro Service Architecture)를 주로 채택하고 있다. 마이크로서비스 아키텍쳐란 모놀리식 아키텍쳐(Monolithic Architecture) 개념과 대응하는 개념인데, 모놀리식은 전통적인 단일 시스템에 모든 기능과 컴포넌트, 서버를 통째로 담아두고 운영하는 구조로 단순한 구조 덕에 운영환경이 용이하지만 규모가 커질수록 빌드와 배포에 시간이 소모되는 단점이 있는 구조이며 마이크로서비스 아키텍쳐는 하나의 애플리케이션을 작은 단위의 서비스 모듈로 나..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 11. 액추에이터 활용하기 애플리케이션 개발의 단계를 지나 운영 단계에 접어들면 애플리케이션의 정상 작동에 대한 모니터링이 필요하다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX(Java Management Extensions)를 활용하여 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공하므로, 이번 장에선 해당 기능에 대해 학습과 실습을 진행한다. 11.1 프로젝트 생성 및 액추에이터 종속성 추가 이번 장의 실습을 위해 새로운 프로젝트를 생성한다. start.spring.io에 접속하여 다음과 같이 설정하고..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 10. 유효성 검사와 예외 처리 유효성 검사(validation) 혹은 데이터 검증이란 애플리케이션의 비즈니스 로직 수행 중 각 계층에서 다른 계층으로 전달되는 데이터가 올바르게 전달되는지 사전 검증하는 과정이다. 자바에서 가장 중요하게 생각해야 할 유효성 검사의 일례로는 NullPointException 예외가 있다. 10.1 일반적인 애플리케이션 유효성 검사의 문제점 일반적인 데이터 검증 로직에는 몇 가지 문제가 있다. 계층별 유효성 검사는 검증 로직이 클래스별로 분산되어 있어 관리가 어렵고, 검증 로직에 중복이 많으며..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 09. 연관관계 매핑 RDBMS에서는 설계가 커지면 테이블을 도메인별로 구분하여 여러개로 나누고, join 등을 이용하여 연관관계를 설정한다. JPA를 활용하는 애플리케이션도 마찬가지로 엔티티간의 연관관계를 표현할 수 있지만, 객체와 테이블의 성질이 다르기에 정확한 연관관례를 표현하기는 어렵다. 이번 장에서는 이러한 제약을 보완하며 연관관계를 매핑하고 사용하는 방법에 대해 알아보고 실습해본다. 9.1 연관관계 매핑 종류와 방향 두 엔티티 간 연관관계의 종류는 다음과 같다. 일대일 One To One (1:1) 일대다 One..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 08. Spring Data JPA 활용 Spring Data JPA에서 제공하는 기능들을 알아보고, 리포지토리 클래스에서 활용법을 실습해보자. 8.1 프로젝트 생성 이번 장의 실습을 위해 새로운 프로젝트를 생성한다. 이전과 동일하게 start.spring.io 에 접속하여 다음 사진과 같이 설정 후, 압축을 해제하고 인텔리제이로 open한다. 프로젝트를 open 했다면, 6장에서 작성한 일부 코드를 가져와야 한다. 다음 사진에 있는 패키지 및 파일의 목록을 해당 위치에 복사 붙여넣기 한다. 이때 클래스들 뿐 아니라 res..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 07. 테스트 코드 작성하기 서비스의 규모가 커짐에 따라, 테스트 코드로 로직이 논리적으로 잘 동작하는지 확인에 대한 중요성이 높아지고 있다. 테스트 코드는 말 그대로 작성한 코드가 예상했던대로 정상적으로 작동하는지에 대한 확인 방법이며, 만일 테스트 코드를 사용하지 않는다면 로직을 수정할 때마다 코드를 반영하고, 서버를 다시 띄우고, 다시 클라이언트 측에서 검증해보는 과정이 반복될 것이다. 테스트 코드의 중요성이 높아짐에 따라 Agile 방법론 중 하나인 '테스트 주도 개발(TDD - Test Driven Develope..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 06. 데이터베이스 연동 애플리케이션, 특히 엔터프라이즈급에서 꼭 필요한 것이 데이터베이스이다. 데이터베이스는 데이터(리소스)를 주고받으며 논리적인 로직이 정상 수행하도록 돕는다. 본 책에서는 실습을 위해 마리아DB(Maria DB)를 적용한다. 6.1 마리아DB 설치 https://mariadb.org/download/ Download MariaDB Server - MariaDB.org REST API Release Schedule Reporting Bugs … Continue reading "Download MariaD..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 05. API를 작성하는 다양한 방법 본격적인 애플리케이션 개발에 필요한 내용을 소개한다. 각 HTTP 메서드에 해당하는 API 개발 및 그 과정에서 필요한 내용을 살펴보고, 외부의 요청에 대해 컨트롤러가 어떻게 구성되는지 알아본다. 5.1 프로젝트 설정 4장의 기억을 되살려 다시 프로젝트를 생성해보자. Maven, Java, Spring Boot 버전(적당한 버전으로 설정)을 설정하고 groupId : 'com.springboot' / name, artifact : 'api' 로 설정하여 springboot를 생성한다. ..
(본 포스팅은 해당 도서의 정리 및 개인 공부의 목적 포스팅임을 밝힙니다.) 장정우, 『스프링 부트 핵심 가이드 : 스프링 부트를 활용한 애플리케이션 개발 실무』, 위키북스, 2022 04. 스프링 부트 애플리케이션 개발하기 스프링 부트 애플리케이션을 단계별로 개발하는 과정에서 익혀야 할 지식에 대해 소개한다. 4.1 프로젝트 생성 인텔리제이 IDEA Spring Initializr 대표적인 두 가지의 스프링 부트 프로젝트를 쉽게 만드는 방법이 존재한다. 4.1.1 인텔리제이 IDEA에서 프로젝트 생성하기 인텔리제이 IDEA 얼티밋 버전에선 내장된 spring initializr으로 쉬운 프로젝트 생성을 지원한다. 인텔리제이 실행. [New Project] -> [Spring Initializr] -> ..