Lombok에는 생성자 관련 어노테이션이 대표적으로 3가지가 있다. @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor 각각에 대해 명확하게 알아보자. 1. @NoArgsConstructor 첫 번째로 @NoArgsConstructor 어노테이션의 경우 매개변수가 없는 기본 생성자를 만들어 준다. 예를 들어 이런 클래스가 있을 때 @NoArgsConstructorpublic class Post { private Long id; private String title;
프레임워크를 사용하다 보면 자연스럽게 쓰게 되지만 막상 DI가 무엇인지 명확히 설명하기 애매한 경우도 많다. 이번 글에서는 DI가 무엇인지, 왜 쓰는지, 그리고 실제 코드에서는 어떻게 사용되는지 알아보자. 1. DI(Dependency Injection)란? DI는 객체가 필요한 의존성을 직접 생성하지 않고 외부에서 전달받도록 하는 설계 방식이다. 이를 통해 객체 생성과 의존성 관리 책임을 클래스 내부가 아닌 외부로 분리할 수 있다. 예를 들어 A 클래스에서 B 클래스를 필요로 할 때 A 클래스 내부에서 new 키워드를 사용하여 직
1. Spring Bean Spring Bean은 Spring의 IoC 컨테이너에 의해 생성되고 관리되는 자바 객체를 의미한다. 자바 클래스가 Spring 컨테이너의 관리 대상으로 등록되는 순간 해당 객체는 Bean이라고 불린다. 일반적인 Java 객체는 개발자가 new 연산자를 사용해 직접 객체를 생성하고 객체 간의 의존 관계도 코드에서 명시적으로 설정한다. 반면 Spring에서는 객체의 생성과 생명주기 관리가 컨테이너에 의해 이루어진다. Spring 컨테이너는 애플리케이션 실행 시 필요한 객체를 생성하고 의존성을 주입하며 애플리
1. 페이징 처리가 필요한 이유 블로그나 커뮤니티 게시판처럼 많은 데이터를 다루는 서비스에서 모든 데이터를 한 번에 내려주는 것은 비효율적이다. 서버에는 불필요한 부하가 발생하고 클라이언트 역시 네트워크 낭비와 렌더링 지연을 겪을 수 있다. 이러한 문제를 해결하기 위해 일반적으로 페이징 처리(Pagination)를 사용한다. 데이터를 일정 단위로 나누어 전달하면 클라이언트는 필요한 페이지만 요청해 효율적으로 화면에 데이터를 표시할 수 있다. Spring Boot에서는 Pageable을 활용해 비교적 간단하게 페이징 처리를 구현할 수
1. 의존성 추가 Spring Boot 2.3 버전 이후부터는 불필요한 의존성을 줄이기 위해 유효성 검사 기능이 기본 웹 스타터(spring-boot-starter-web)에서 분리되었다. 따라서 @Valid 기반의 Bean Validation을 사용하려면 별도의 의존성을 추가해야 한다. // build.gradle (Gradle)dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation'}// pom.xml (Maven) depend