Spring 22

[Spring] 단위 테스트 | 테스트 코드 작성법

1. BeforeAfterTestpackage com.sparta.junit5practice;import org.junit.jupiter.api.*;public class BeforeAfterTest { @BeforeEach void setUp() { System.out.println("각각의 테스트 코드가 실행되기 전에 수행"); } @AfterEach void tearDown() { System.out.println("각각의 테스트 코드가 실행된 후에 수행\n"); } @BeforeAll static void beforeAll() { System.out.println("모든 테스트 코드가 실행되기 전에 최초로 수행\n")..

Spring 2024.09.10

[Spring] 스프링 예외처리 통일 | 스프링 HttpStatus 반환 통일 | 스프링 에러 통일

협업하다보면 에러 메세지를 작성하는 방식이 모두 다릅니다.더하여 리턴할 숫자도 정해주어야 하는데요!이번에 스프링으로 개발하며 사용했던 에러 통일 방법을 알려드리겠습니다.   먼저 ApiPayload 패키지를 만들어줍니다.com/└── sparta/ └── newsfeed/ ├── ApiPayload/ │ ├── Code/ │ └──── dto/ | └────── ErrorReasonDto.java | └────── ReasonDto.java │ ├──── Status/ │ ├────── ErrorStatus.java │ ├────── SuccessStatus.java ..

Spring 2024.09.05

[Spring] Filter | Filter Interface

Filter란? 서블릿 필터(Servlet Filter)는 Java 웹 애플리케이션에서 클라이언트의 요청(request)과 응답(response)을 가로채서 처리할 수 있는 강력한 매커니즘입니다.필터는 요청이 특정 서블릿에 도달하기 전 또는 응답이 클라이언트에게 전달되기 전에 실행됩니다.이를 통해 요청/응답 데이터를 조작하거나, 접근을 제어하고, 로깅을 수행하는 등의 작업을 할 수 있습니다.   Filter Interface 서블릿 필터 인터페이스는 jakarta.servlet.filter 인터페이스를 구현하여 작성됩니다.이 인터베이스는 서블릿 요청을 가로채어 처리할 수 있도록 하는 메서드들을 제공합니다. 예시import jakarta.servlet.Filter;import jakarta.servlet...

Spring 2024.08.29

[Spring] 1대N 관계 | N대1 관계 | N대M | 양방향, 단방향 관계 정리

스프링(Spring Framework)에서 1대N, N대1, N대M 관계는 객체 관계 매핑(ORM)에서 많이 사용되며,주로 JPA에서 엔티티 간의 관계를 설정할 때 사용됩니다.이 관계들은 데이터베이스 테이블 간의 관계를 객체 모델에서 표현하는 방법입니다.또한, 양방향과 단방향 관계는 엔티티 간의 데이터 접근 방법을 정의합니다.   1. 1대N (One-to-Many) 관계 설명: 하나의 엔티티가 여러 개의 다른 엔티티를 참조하는 관계입니다.예시: 예를 들어, 하나의 부서(Department)가 여러 명의 직원(Employee)를 가질 수 있습니다. 구현 코드 예시@Entitypublic class Department { @Id @GeneratedValue private Long id; @..

Spring 2024.08.28

[Spring] 3 Layer Architecture | Spring 3 Layer

✔  3 Layer Architecture란? 서버를 개발 관점에서 각 계층별로 역할을 분리하는 개념입니다.        1. Presentation Layer, Controller역할: 사용자가 입력한 데이터의 형식이나 간단한 유효성 검사를 수행합니다. 예를 들어, 입력 필드가 빈 값인지, 숫자 필드에 숫자가 들어왔는지, 이메일 형식이 올바른지 등을 검증합니다.쉬운설명: 사용자가 입력한 요청이 유효한 요청인지 검사하고 필터링하는 역할을 합니다. 더하여, 사용자에게 요청을 받고, 데이터를 전달하는 역할을 합니다.구성요소: Spring MVC의 @Controller 혹은 @RestController예시public class UserDTO { @NotNull @Size(min = 2, max = ..

Spring 2024.08.21

[Spring] Spring MVC | Spring MVC의 개념

1. Model(모델)역할: 데이터와 비즈니스 로직을 다룹니다.설명: 모델은 애플리케이션이 관리해야 하는 정보나 데이터를 의미합니다. 예를 들어, 사용자의 정보(이름, 나이, 주소 등)를 저장하거나 데이터베이스에서 가져오는 작업을 담당합니다.예시: 사용자가 스케줄 일정을 생성하면 이를 생성하고 저장하는 역할을 수행합니다.  2. View(뷰)역할: 사용자가 보게 될 화면을 담당합니다.설명: 뷰는 데이터가 시각적으로 표현되는 부분입니다. 화면에 출력될 내용(HTML, 텍스트 등)을 만들고 사용자에게 보여주는 역할을 합니다.예시: 사용자가 스케줄 일정을 생성하는데 성공하면 "스케줄 생성 성공"이라는 메시지를 화면에 보여주는 것이 뷰의 역할입니다.   3. Controller(컨트롤러)역할: 모델과 뷰를 연결..

Spring 2024.08.20

[Spring] Spring Boot Transaction 트랜잭션 개념 이해하기

트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스에서 하나의 작업 단위를 말합니다. 이 작업 단위는 여러 개의 작업을 하나의 논리적 작업으로 묶어 처리합니다.트랜잭션의 중요한 특징은 'ACID'라고 불리는 네 가지 속성을 가지고 있습니다.   1. 원자성(Atomicity): 트랜잭션 내의 모든 작업은 전부 성공하거나 전부 실패해야 합니다.즉, 일부만 성공하고 일부만 실패하는 상황이 발생하면 안됩니다. 이를 위해 트랜잭션 중에 오류가 발생하면 모든 작업을 취소하고, 데이터베이스를 트랜잭션 시작 이전 상태로 되돌립니다. 2. 일관성(Consistency): 트랜잭션이 완료된 후에도 데이터베이스의 상태는 항상 일관성 있게 유지되어야 합니다.트랜잭션이 성공적으로 완료되면, 데이터베이스는 정합성을 유..

Spring 2024.08.19

[Spring] Spring Container | IoC 제어의 역전 | DI 의존성 주입

IoC란?IoC란 Inversion of Control의 약자입니다. 제어의 역전이라는 뜻인데요! 프로그래머와 프레임워크의 주체가 바뀌었다고도 표현합니다.일반적인 경우라면 개발자가 미리 정한 순서에 따라 생성, 실행을 주도하고 하였습니다. (개발자가 제어권을 가짐)IoC가 등장한 이후로는 객체의 생성, 생명주기, 관리까지 모든 객체에 대한 주도권을 프레임워크가 가져간 것입니다. IoC를 통해 Application을 구성하는 객체 간의 낮은 결합도를 유지할 수 있게 되었습니다.IoC의 역할을 담당하는 것이 Spring Container입니다.Spring Container를 IoC Container라고도 합니다.   Spring Container란? 스프링 컨테이너는 Spring Application 내에서..

Spring 2024.08.18

[Spring] Spring Boot로 할일 관리 앱 서버 개발하기 | 3 Layer Architecture 구현 | DTO 구현 | Controller, Service, Repository 역할 분리 | IoC와 DI | 사용자 정의 예외 클래스 구현

스프링 부트로 할일 관리 앱 서버를 개발했습니다. 이 프로젝트에서 가장 중요하게 생각한 것은 1. 3 Layer Architecture 구현2. Controller - Service - Repository로 역할 분리하기3. IoC와 DI를 이해하고 구현하기4. DTO 구현하기5. 사용자 정의 예외 클래스 구현  입니다. 세가지를 다 구현하려고 하니확실히 여태까지 했던 프로젝트보다 파일 수가 많아졌습니다.  최종으로 완성된 코드의 파일들입니다.굉장히 많습니다.많은 기능들이 따로 구현되어 있기 때문에헷갈릴 수 있어 각각의 코드들이 어떤 역할을 하는지 적어보려 합니다.         com/└── sparta/ └── planmanager/ ├── controller/ │ ..

Spring 2024.08.16