프레임워크(Framework)란? 애플리케이션을 개발하는데 필요한 구조와 구성을 제공 프레임워크만으로 애플리케이션이 동작하지는 않음 프레임워크 vs 라이브러리 라이브러리? 애플리케이션 개발에 필요한 내용을 미리 구현하고 모아 놓은 것 필요할 때 호출하여 사
스프링 프레임워크
POJO의 조건과 장점
제어의 역전, 의존성 주입
AOP
PSA, 일관된 서비스 추상화 기법
Spring Boot
스프링 컨테이너
빈, 빈 스코프
타입별 어드바이스
포인트컷 표현식
조인 포인트
애너테이션을 이용한 AOP
MVC 패턴
Controller란? Spring MVC 구조에서 Controller는 API 계층에 속하며 클라이언트의 요청을 받고 받은 요청을 처리하여 응답으로 돌려주는 역할을 한다. Controller를 Spring Bean으로 지정하는 방법으로 아래 두 가지의 어노테이션이 존재한다. @RestController Restful 웹 서비스에서 주로 사용하는 컨트롤...
HTTP 헤더란? HTTP 메세지 구성 요소 중 하나로 클라이언트의 요청이나 서버의 응답에 포함되어 부가적인 정보를 HTTP 메세지에 포함할 수 있다. > ### HTTP 헤더의 사용 목적 클라이언트와 서버 관점에서의 대표적인 HTTP 헤더 Content-Type 가장 많이 사용하는 헤더 정보 application/json과 같이 클라이언트와 서버가 ...
DTO
서비스란? 서비스란 도메인 업무 영역을 구현하는 비즈니스 로직과 관련이 있다. 애플리케이션의 비즈니스 로직을 처리하기 위한 서비스 계층은 대부분 도메인 모델을 포함한다. 도메인 모델은 빈약한 도메인 모델과 풍부한 도메인 모델로 구분할 수 있는데, 이러한 도메인 모델은 DDD(도메인 주도 설계, Domain Driven Design)와 관련이 깊다. D...
예외 처리 자바에서 try-catch를 활용하여 예외를 잡던 것 처럼 스프링에서도 throw로 예외를 던진 것을 @ExceptionHandler를 통해 잡을 수 있다. @ExceptionHandler를 활용하면 애플리케이션에서 예외가 발생했을 때 예외를 잡아 원인을 응답 메세지로 받아볼 수 있다. 예외가 발생했을 때 응답 메세지는 다음과 같은데, 기본...
JDBC란? Java Database Connectivity의 약자로 Java 기반 애플리케이션의 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장, 업데이트하거나 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는
Spring Data JDBC 기반의 데이터 액세스 계층을 연동하기 위해서는 데이터 베이스의 테이블과 도메인 엔티티 클래스의 설계를 해야 한다.
도메인 엔티티 및 테이블 설계 도메인에서 애그리거트 루트 찾기 애그리거트 간의 관계 회원 정보(Member)와 주문 정보(Orders)의 관계 (1 대 N) 한 명의 회원이 여러 번 주문을 할 수 있다. 주문 정보(Orders)와 커피 정보(Coffee)의
JPA란 Java Persistence API의 약자(Jakarta Persistence 라고도 불림)로, Java 진영에서 사용하는 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 즉, 실제로 구현된 것이 아닌 구현된 클래스와의 매핑을 위해 사용되는 프레임워크
@Entity 어노테이션을 붙여 JPA 관리 대상 엔티티로 지정@Table은 옵션이지만 @Entity와 @Id는 필수테이블의 기본값은 클래스 명이지만, 변경하고 싶다면 name = "원하는클래스명" 으로 변경 가능@Entity (name = ) 엔티티와 테이블 명 모두
다중성 (일대다, 다대일, 일대일, 다대다)방향 (양방향, 단방향)연관관계의 주인한쪽 클래스만 다른 쪽 클래스의 참조 정보를 가지고 있는 관계Member에서만 Order를 참조하여 값을 가져올 수 있음양쪽 클래스가 서로의 참조 정보를 가지는 관계Member와 Order
테이터베이스의 상태를 변경시키기 위해 수행하는 작업의 단위를 의미한다. 데이터베이스의 상태를 변화시킨다는 것은 질의어인 SQL을 이용하여 데이터베이스에 접근하는 것을 의미한다. 그리고 작업의 단위는 물리적으론 여러 개의 작업이지만, 논리적으로는 하나의 작업으로 인식될
선언형 방식으로 트랜잭션을 적용하는 방법은 크게 두 가지가 있다.비즈니스 로직에 애너테이션을 추가하는 방식AOP 방식을 이용하여 비즈니스 로직에서의 코드를 감추는 방식클래스 레벨이나 메서드 레벨에에 @Transcational 애너테이션을 추가하여 Service 내에 R
이벤트 리스너는 애플리케이션을 구현하는 과정에서 서로 다른 서비스간의 의존성이 발생하는 경우에 분리하여 의존성을 줄이기 위해 사용할 수 있다. 사진 출처스프링 이벤트는 event class와 이벤트를 발생시키는 event publisher, 이벤트를 받아들이는 even
주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트한다.애플리케이션의 여러 계층이 연관되어 독립적인 테스트가 가능하다고 보기 힘들기에 단위 테스트라고 하기에는 범위가 넓다.애플리케이션을 특정 계층으로 쪼개어서 하는 테
클라이언트의 요청을 받아들이는 핸들러인 Controller가 테스트 대상의 대부분@SpringBootTest: 스프링 부트 기반의 애플리케이션을 테스트하기 위한 Application Context를 생성해줌@AutoConfigureMockMvc: Controller 테
Mock-up(목업)은 실제 제품 이전에 내부적으로 사용하기 위한 가짜 모형을 의미한다.테스트에서는 가짜 객체를 의미한다.Mock을 사용함으로써 불필요한 기능을 제거하고 원하는 영역만을 테스팅할 수 있다.원래대로라면, 회원 등록 기능을 테스트하기 위해 데이터베이스까지
테스트 주도 개발(Test Driven Development)의 약자로 테스트를 먼저 하고 구현을 나중에 하는 것을 의미한다.모든 조건에 만족하는 테스트를 먼저 진행하고, 조건에 만족하지 않는 테스트를 단계적으로 진행하면서 실패하는 테스트를 점진적으로 성공시켜 나간다.
클라이언트가 REST API 백엔드 애플리케이션에 요청을 전송하기 위해서 알아야 되는 요청 정보(URL, URI, Reqeust Body, Query Parameter)를 문서로 잘 정리하는 것을 의미한다.API 문서를 수기로 작성하는 것은 비효율적이고, 누락되는 기능