본문 바로가기

백엔드

스프링 부트 핵심 가이드(장정우 지음) ch.13 13장: 서비스의 인증과 권한 부여 13-1-1 인증 인증(authentication)은 사용자가 누구인지 확인하는 단계를 의미한다.인증의 대표적인 예로 '로그인'이 있다. 로그인은 데이터베이스에 등로고딘 아이디와 패스워드를 사용자가 입력한 아이디와 비밀번호와 비교해서 일치 여부를 확인하는 과정이다. 13-1-2 인가 인가(authorization)는 인증을 통해 검즌된 애플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정을 의미한다. 예를 들어, 로그인한 사용자가 특정 게시판에 접근해서 글을 보려고 하는 경우 게시판 접근 등급을 확인해 접근을 허가하거나 거부하는 것이 대표진 인가의 사례이다. 13-1-3 접근 주체 접근 주체(principal)는 말 그대로.. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.12 12장: 서버 간 통신 12-1 RestTemplate이란? RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTful 원칙을 따르는 서비스를 편리하게 만들 수 있다. RestTemplate은 기본적으로 동기 방식으로 처리되며, 비동기 방식으로 사용하고 싶을 경우 AsyncRestTemplate을 사용하면 된다. 다만 RestTemplate은 현업에서는 많이 쓰이나 지원 중단(deprecated)된 상태라서 향후 빈번하게 쓰이게 될 WebClient 방식도 함께 알아둬야 한다. 특징 HTTP 프로토콜의 메서드에 맞는 여러 메서드를 제공한다. RESTful 형식을 갖춘 템플릿이다. HTTP 요청 후 J.. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.11 11장: 액추에이터 활용하기 11-2 엔드포인트 액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로이다. 스프링 부트에는 여러 내장 엔드포인트가 포함돼 있으며, 커스텀 엔드포인트를 추가할 수도 있다. 액추에이터를 추가하면 기본적으로 엔드포인트 URL로 /actuator가 추가되며 이 뒤에 경로를 추가해 상세 내역에 접근한다. 만약 다른 경로를 사용하고 싶다면 application.properties 파일에 작성한다. 액추에이터의 기본 엔드포인트 리스트 ID 설명 auditevents 호출된 Audit 이벤트 정보를 표시한다. AuditEventRepository 빈이 필요하다. beans 애플리케이션에 있는 모든 스프링 빈 리스트를 표시한다. caches 사용 가능한 캐시를 표시한다. con.. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.10 10장: 유효성 검사와 예외 처리 10-1 일반적인 애플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직에는 몇 가지 문제점이 있다. 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스별로 분산돼 있어 관리하기가 어렵다. 그리고 검증 로직에 의외로 중복이 많아 여러 곳에 유사한 기능의 코드가 존재할 수 있다. 마지막으로 검증해야 할 값이 많다면 검증하는 코드가 길어진다. 이렇나 문제로 코드가 복잡해지고 가독성이 떨어진다. 이 같은 문제를 해결하기 위해 자바 진영에서는 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공한다. 어노테이션을 통해 다양한 데이터를 검증하는 기증을 제공한다. Bean Validation을 사용한다는 것은 유효성 검사를 위한 .. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.9 9장: 연관관계 매핑 9-1 연관관계 매핑 종류와 방향 One To One: 일대일(1:1) One To Many: 일대다(1:N) Many To Many: 다대다(N:M) 연관관계는 어떤 엔티티를 중심으로 보느냐에 따라 상태가 달라진다. 데이터베이스에서는 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조로 생성되지만 JPA를 사용하는 객체지향 모델링에서는 엔티티 간 참조 방향을 설정할 수 있다. 데이터베이스와 관계를 일치시키기 위해 양뱡향으로 설정해도 무관하지만 비즈니스 로직의 관점에서 봤을 때는 단방향 관계만 설정해도 해결되는 경우가 많다. 단방향과 양방향 관계 정리 단방향: 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식이다 양방향: 두 엔티티의 관계에서 각엔티티가 서로.. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.8 8장: Spring Data JPA 활용 8-2 JPQL JPQL은 JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다. JPQL의 문법은 SQL과 매우 비슷한 것이 특징이다. 8-3 쿼리 메서드 살펴보기 리포지토리는 JpaRepository를 상속받는 것만으로도 다양한 CRUD 메서드를 제공한다. 8-3-2 쿼리 메서드의 주제 키워드 주요 키워드 find...By read...By get...By query...By search...By stream...By 리턴 타입으로 Collection이나 Stream에 속한 하위 타입을 설정할 수 있다. exisits...By 특정 데이터가 존재하는지 확인하는 키워드이다. 리턴 타입은 boolean 타입이다. count...B.. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.6 6장: 데이터베이스 연동 6-2 ORM Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미한다. 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법이다. ORM의 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. - 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어든다. - 객체지향적으로 데이터베이스에 접근할 수 있어 코드의 가독성을 높인다. 재사용 및 유지보수가 편하다. - ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이하다. - 객체들은 각 클래스로 나뉘어 있어 유지보수가 수월하다. 데이터베이스에 대한 종속성이 줄어든다. - ORM을 통해 자동 .. 더보기
스프링 부트 핵심 가이드(장정우 지음) ch.5 5장: API를 작성하는 다양한 방법 5-2 GET API 만들기 GET API는 웹 애플리케이션 서버에서 값을 가져올 때 사용하는 API이다. 5-2-1 @RequestMapping으로 구현하기 @RequestMapping 어노테이션을 별다른 설정 없이 선언하면 HTTP의 모든 요청을 받는다. 어노테이션의 method 요소의 값을 설정하여 요청 형식을 설정한 값으로만 설정할 수 있다. HTTP 메서드 @GetMapping @PostMapping @PutMapping @DeleteMapping 5-2-3 @PathVariable을 활용한 GET 메서드 구현 @PathVariable을 명시하여 @GetMapping 어노테이션과 @PathVariable에 지정된 변수의 이름을 동일하게 맞추어 값을 받는다. .. 더보기