스프링부트 핵심가이드 6

서비스의 인증과 권한 부여

보안 용어 이해 인증 (Authentication) 사용자가 누구인지 확인하는 단계 ex) 로그인 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰 (token)을 전달 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근 불가 인가 (Authorization) 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때, 해당 리소스에 접근할 권리가 있는지 확인 ex) 특정 게시판 게시판 접근 등급을 확인해 접근을 허가하거나 거부 접근 주체 (Principal) 애플리케이션 기능을 사용하는 주체 ex) 사용자 또는 디바이스, 시스템 스프링 시큐리티 동작 구조 서블릿 필터 (Servlet Filter) 기반 동작, DispatcherServlet 앞에 필터 배치 필터체인 (FilterChai..

액추에이터 & 서버 간 통신

액추에이터 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링 하고 관리할 수 있는 기능 제공 * JMX (Java Management Extensions) 실행 중인 애플리케이션으 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API JMX를 통해 리소스 관리를 하려면 MBeans(Manage Bean)를 생성해야함 액추에이터 종속성 추가 액추에이터 기능을 사용하려면 애플리케이션에 spring-boot-starter-actuaor 모듈의 종속성을 추가해야함 엔드포인트 애플리케이션의 모니터링을 사용하는 경로 스프링부트는 여러 내장 엔드포인트가 포함돼 있으며, 커스텀 엔드포인트를 추가 할 수 있음 액추에이터를 추가하면 기본적으로 엔드포인트 URI로 /actuator 가 추가되며, 뒤에 경로를 ..

유효성 검사와 예외처리

유효성 검사 데이터를 사전 검증하는 작업 일반적인 애플리케이션 유효성 검사 문제점 계층별로 진행하는 유효성 검사 관리하기 어려움 중복코드 존재 길어지는 검증코드 Hibernate Validator Bean Validation 명세의 구현체로 도메인 모델에서 어노테이션을 통한 필드값 검증을 가능하게 도와줌 스프링 부트에서의 유효성 검사 유효성 검사 라이브러리를 의존성으로 추가하면 사용할 수 있음 spring-boot-starter-validation 유효성 검사는 각 계층으로 데이터가 넘어오는 시점에 해당 데이터에 대한 검사를 실시함 계층간 데이터 전송에 대체로 DTO 객체를 활용하고 있기 때문에 DTO 객체를 대상으로 수행하는 것이 일반적 이외 @Validated 어노테이션과 커스텀 Validation을..

연관관계 매핑

연관관계 매핑 RDBMS를 사용할 때는 각 도메인에 맞는테이블을 설계하고 연관관계를 설정해서 조인(Join) 등 기능을 활용함 JPA를 사용하는 어플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있음 다만, 정확한 연관관계를 표현할 수는 없음 연관관계 매핑 종류와 방향 One To One : 일대일 (1 : 1) One To Many : 일대다 (1 : N) Many To One : 다대일 (N : 1) Many To Many : 다대다 (N : M) 어떤 엔티티를 중심으로 연관 엔티티를 보느냐에 따라 연관관계의 상태가 달라짐 JPA를 사용하는 객체지향 모델링에서는 엔티티 간 참조 방향을 설정할 수 있음 비즈니스 로직의 관점에서 봤을 경우 단방향 관계만 설정해도 해결되는 경우가 있음..

Spring Data JPA

JPQL JPA Query Language 의 줄임말로 JPA에서 사용할 수 있는 쿼리 엔티티 객체를 대상으로 수행하는 쿼리 매핑된 엔티티의 이름과 필드의 이름을 사용 쿼리 메서드의 생성 쿼리 메서드는 주제(Subject)와 서술어(Predicate)로 구분 ' find...By ', ' exists...By ' 와 같은 키워드로 쿼리의 주제를 정하며, ' By '는 서술어의 시작을 나타내는 구분자 역할을 함. 서술어 부분은 검색 및 정렬 조건을 지정하는 영역 / 엔티티의 속성으로 정의할 수 있고, AND 나 OR 를 사용해서 조건을 확장하는 것도 가능. // (리턴타입) + {주제 + 서술어(속성)} List findByEmailAndName(String email, String name); 쿼리 메서..

데이터베이스 연동 - 2

ORM ORM은 Object Relational Mapping의 줄임으로 '객체 관계 매핑'을 의미함. 객체와 RDB (Relational DataBase)의 테이블을 자동으로 매핑하는 방법 자바 클래스는 RDB 테이블과 불일치가 존재할 수 밖에 없음. ORM이 불일치와 제약사항을 해결하는 역할을 함 ORM을 사용하면 코드로 데이터를 조작할 수 있음. ORM 장점 데이터베이스 쿼리를 객체지향적으로 조작 할 수 있음 개발 비용 ↓ 가독성 ↑ 재사용 및 유지보수가 편리함 데이터베이스에 대한 종속성이 줄어듦 데이터베이스를 교체하는 상황에서도 비교적 적은 리스크를 부담 ORM 단점 온전한 서비스 구현의 한계 복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성하게 되면 속도 저하 등의 성능 문제가 발생할 수 있음 ..