이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 보안 용어 인증 (Authentication) 사용자가 누구인지 확인하는 단계를 의미 ex) 로그인 로그인에 성공하면 어플리케이션 서버는 응답으로 사용자에게 토큰(token)을 전달하고, 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없다. 인가 (Authorization) 인증을 통해 검증된 사용자가 어플리케이션 내부의 리소스에 접근할 때 사용자가 해당 리소스에 접근할 권리가 있는지를 확인하는 과정 ex) 관리자 게시판은 관리자만 접근을 허가한다. 접근 주체 (Principal) 어플리케이션의 기능을 사용하는 주체를 의미 접근 주체는 사용자/디바이스..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 액추에이터 (Actuator) https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html Actuator는 HTTP 엔드포인트나 JMX를 활용해 어플리케이션을 모니터링하고 관리할 수 있는 기능을 제공하며 spring-boot-starter-actuator 종속성을 추가해야 사용할 수 있다. 엔드포인트 엔드포인트는 어플리케이션의 모니터링을 사용하는 경로이다. 스프링 부트내에 여러 내장 엔드포인트가 있으며, 커스텀 엔드포인트를 추가할 수도 있다. 기본 엔드포인트 URL로 /actuator 가 추가되며, ..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 10장. 유효성 검사와 예외 처리 Bean Validation 어노테이션을 통해 데이터를 검증하는 기능을 제공한다. 유효성 검사를 위한 로직을 DTO 같은 도메인 모델과 묶어서 각 계층에서 사용하면서 검증 자체를 도메인 모델에 얹는 방식으로 수행한다. 코드의 간결함을 유지할 수 있고, 가독성이 좋아진다. Hibernate Validator Bean Validation 명세의 구현체 스프링 부트에서 채택하여 사용하고 있다. JSR-303 명세의 구현체로서 도메인 모델에서 어노테이션을 통한 필드값 검증을 가능하도록 도와준다. 의존성 추가 gradle implementation 'o..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 09장. 연관관계 매핑 연관관계 매핑 종류와 방향 One To One : 일대일(1:1) One To Many : 일대다(1:N) Many To One : 다대일(N:1) Many To Many : 다대다(N:M) 단방향 : 두 엔티티의 관계에서 한쪽의 엔티티만 참조하는 형식 양방향 : 두 엔티티의 관계에서 각 엔티티가 서로의 엔티티를 참조하는 형식 JPA와 데이터베이스의 차이 데이터베이스 : 두 테이블의 연관관계를 설정하면 외래키를 통해 서로 조인해서 참조하는 구조 JPA : 엔티티 간 참조 방향을 설정 연관관계가 설정되면 한 테이블에서 다른 테이블의 기본값을 외래키로 갖게 ..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 08장. Spring Data JPA 활용 JPQL (JPA Query Language) JPQL = JPA에서 사용할 수 있는 쿼리 문법은 SQL과 매우 비슷하지만 SQL에서는 칼럼의 이름을 사용하는 것과 달리 JPQL은 매핑된 엔티티의 이름과 필드의 이름을 사용한다. SELECT p FROM Product p WHERE p.number = ?1; 쿼리 메서드 리포지토리는 JpaRepository를 상속받는 것만으로도 기본적인 CRUD 메서드를 제공하지만 별도의 메서드를 정의해서 사용하는 경우가 많다. 쿼리 메서드 생성 쿼리 메서드는 동작을 결정하는 주제(Subject)와 서..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 06장. 데이터베이스 연동 ORM (Object-Relational Mapping) 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터를 변환하고 연결하는 기술 ORM은 개발자가 관계형 데이터베이스와 상호 작용하기 위해 SQL 쿼리를 직접 작성하는 대신, 객체 지향 프로그래밍 언어에서 사용하는 클래스와 객체를 활용하여 데이터베이스를 조작할 수 있도록 도와준다. ORM의 장점과 단점 장점 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. 재사용 및 유지보수가 편리하다. 데이터베이스에 대한 종속성이 줄어든다. 단점 ORM만으로 온전한 서비스를 구현하기에는 한계가 있다. ..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 04장. 스프링 부트 애플리케이션 개발하기 프로젝트 생성 spring initializer를 통해 생성 프로젝트 이름, 생성할 위치, 언어, 타입(Gradle, Maven), 그룹과 아티팩트, 자바 버전, 패키지 생성 옵션 선택 의존성은 프로젝트를 생성할 때 추가 가능하고, 생성 이후에도 추가 가능 Maven / Gradle maven : pom.xml 파일에 프로젝트 설정과 의존성 관리 gradle : build.gradle 파일에서 프로젝트 설정과 의존성 관리 05장. API를 작성하는 다양한 방법 GET API 1. @RequestMapping @RequestMapping..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다.스프링 프레임워크(Spring Framework)에는 약 20개의 모듈이 들어있다. 근데 기능이 많은 만큼 개발자가 신경써야 할 것이 많아지고 주요 업무인 비즈니스 로직 설계에 집중 할 수 없게 된다. 이를 해결하기 위해 나온 것이 스프링 부트(Spring Boot)이다. 특징1. 자동 설정(Auto-configuration)스프링 부트는 다양한 기본 설정을 제공하여 개발자가 별도의 설정 없이도 어플리케이션을 실행할 수 있게 한다. 예를 들어, 스플이 데이터 JPA를 사용하기 위해 필요한 설정이 있다면, 스프링 부트는 자동으로 해당 설정을 수행한다. 이때, 개발자는 필요한 설정을..
이 글은 '스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무' 책을 통해 학습한 내용을 정리한 글입니다. 스프링 부트(Spring Boot) 스프링 부트는 자바 기반의 오픈 소스 프레임워크인 스프링(Spring)을 기반으로한 독립적으로 실행 가능한 애플리케이션을 빠르고 간편하게 개발할 수 있도록 도와주는 도구이다. 스프링 부트는 스프링 프레임워크의 설정을 자동화하고, 개발자가 주로 신경써야 하는 공통적인 작업들을 간소화하여 생산성을 향상시킨다. 스프링의 특징과 구조 제어 역전(IoC; Inversion of Control) 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 담당하는 디자인 패턴이다. 제어 역전은 객체의 의존성을 관리하는 방식으로 주로 사용된다. 전통적인 ..