일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- devpi
- Token
- 코틀린
- Component
- JPA
- entity
- OOP
- Configuration
- JWT
- 스프링
- 자바
- map
- 티스토리챌린지
- 오블완
- SpringFramework
- BEAN
- ava백엔드
- 소프트웨어설계
- JPQL
- Stream
- kotlin
- Spring Boot
- java
- javamailsender
- Spring
- 객체지향
- 클래스
- 스프링 부트
- 토큰
- springboot
- Today
- Total
목록Develop/Spring (12)
DeveloPiano

Spring을 처음 접하면 다양한 어노테이션들과 빈(bean), 의존성 주입, 그리고 리졸버 등 익숙하지 않은 개념들이 한꺼번에 등장해 혼란스럽기 쉽습니다. 이번 포스팅에서는 @Component, @Configuration 그리고 HandlerMethodArgumentResolver(커스텀 리졸버) 같은 핵심 개념들을 정리해 보겠습니다.1. 스프링 빈(Bean)과 @Component의 의미스프링 빈이란?스프링 컨테이너가 생성하고 관리하는 객체를 빈(Bean) 이라고 부릅니다. 이 객체들은 기본적으로 싱글톤(하나만 생성)으로 관리되며, 필요한 곳에 자동으로 주입됩니다.@Component@Component는 "이 클래스를 스프링 빈으로 등록해 주세요"라는 의미의 어노테이션입니다. 스프링은 컴포넌트 스캔(Co..

웹 개발을 진행하다 보면 프론트엔드와 백엔드가 완전히 분리된 SPA(Single Page Application) 구조가 아닌, HTML, CSS, JS 파일이 모두 resources 하위에 위치한 전통적인 Spring Boot 구조를 마주하게 됩니다.이런 구조는 일반적으로 다음과 같이 불립니다:모놀리식 아키텍처(Monolithic Architecture)멀티 페이지 애플리케이션(MPA)서버 사이드 렌더링(SSR: Server-Side Rendering) 방식즉, 하나의 애플리케이션에서 뷰 렌더링과 API 처리를 모두 담당하는 구조입니다. 서버가 직접 HTML을 생성해 클라이언트에 전달하고, 사용자는 요청할 때마다 새로운 HTML 페이지를 받는 방식입니다.form action 기반 vs JavaScript..

Spring JPA로 개발을 하다 보면 new Entity()를 통해 엔티티 객체를 직접 생성하고 싶은 유혹에 빠지기 쉽습니다. 그런데 실무에서는 보통 이렇게 하지 않도록 유도하거나 제한을 둡니다. 왜 그런 걸까요?이번 글에서는 다음과 같은 내용을 중심으로 정리해보겠습니다.@NoArgsConstructor(access = AccessLevel.PROTECTED)를 사용하는 이유무분별한 빈 객체 생성을 피해야 하는 이유static 팩토리 메서드가 필요한 이유기본 생성자에 protected를 설정하면 어떤 문제가 발생할까?JPA에서는 기본 생성자가 반드시 필요합니다. 그런데 그 생성자가 protected여서 다음 코드가 컴파일 에러를 발생시키는 경우가 있습니다.// 컴파일 에러 발생MemberEntity e..

Spring 프레임워크를 처음 접하면 자주 듣게 되는 용어들이 있습니다. 바로 Bean, Container, Component, Configuration과 같은 단어들이죠. 이들은 스프링의 핵심 개념으로, 서로 밀접한 관계를 가지고 있어 처음에는 다소 헷갈릴 수 있습니다.이 글에서는 각각의 개념이 무엇인지, 그리고 이들이 어떻게 서로 연결되어 있는지를 예제와 함께 이해하기 쉽게 정리해보겠습니다.Bean이란?스프링에서 **Bean(빈)**은 Spring IoC 컨테이너가 관리하는 객체를 의미합니다. 개발자가 직접 생성하는 객체가 아닌, 스프링이 대신 생성하고 주입까지 관리해주는 객체라고 생각하면 됩니다.예를 들어, 어떤 서비스 클래스를 Bean으로 등록하면 스프링이 해당 객체를 생성해 관리합니다.@Comp..

프로그래밍을 처음 배우기 시작하면 자주 듣게 되는 용어 중 하나가 바로 "인스턴스화(Instantiation)"입니다. 이 용어는 특히 객체지향 프로그래밍(OOP)에서 중요한 개념이며, 클래스(class), 객체(object), 그리고 인스턴스(instance)와 밀접한 관계를 가지고 있습니다. 이 글에서는 인스턴스화가 무엇인지, 그리고 클래스, 객체, 인스턴스와 어떤 관계가 있는지를 쉽게 설명해보겠습니다.클래스(Class)란?클래스는 설계도 또는 틀이라고 생각할 수 있습니다. 어떤 대상을 코드로 모델링할 때, 그 대상이 가질 수 있는 속성(변수)과 행동(함수)을 정의해놓은 구조입니다.class Car(val color: String, val speed: Int) { fun drive() { ..

웹 개발을 하다 보면 자주 마주치는 오류 중 하나가 바로 다음과 같은 메시지입니다:Web server failed to start. Port 8080 was already in use처음 접하는 개발자라면 이 메시지가 다소 당황스럽게 느껴질 수 있습니다. 이 포스팅에서는 이 오류가 발생하는 원인과 해결 방법을 단계별로 알아보겠습니다.❓ 이 오류는 무엇인가요?간단히 말해, 8080번 포트를 이미 다른 프로그램이 사용 중이기 때문에 새로 실행하려는 웹 서버가 해당 포트를 사용할 수 없어 발생하는 오류입니다.8080번 포트는 웹 개발에서 자주 사용하는 기본 포트 중 하나로, 여러 애플리케이션(예: Tomcat, Spring Boot 등)에서 기본값으로 설정되어 있습니다.🛠 해결 방법1️⃣ 포트를 사용 중인 ..
Spring Framework에서는 객체를 스프링 빈(Sprint Bean)으로 관리하여 의존성 주입(DI)을 통해 애플리케이션을 구성합니다. 이를 위해 다양한 어노테이션을 제공하며, 그중 대표적으로 @Bean, @Component, @Configuration 어노테이션이 있습니다. 이들은 객체를 스프링 컨테이너에 등록하고 관리하는 데 중요한 역할을 합니다. 각각의 역할과 차이점에 대해 알아보겠습니다.1. @Component개요@Component는 클래스 수준에서 사용하는 어노테이션으로, Spring이 해당 클래스를 빈으로 자동 등록하도록 합니다.컴포넌트 스캔(Component Scan)을 통해 Spring이 @Component가 붙은 클래스를 찾아서 빈으로 생성하고 컨테이너에 등록합니다.특징@Compo..
데이터베이스 설계에서 때로는 하나의 필드가 아닌 두 개 이상의 필드를 결합하여 기본 키(Primary Key)로 사용해야 할 때가 있습니다. 이런 경우를 복합 키(Composite Key)라고 하며, JPA에서는 이를 지원하기 위해 @EmbeddedId와 @IdClass라는 두 가지 방식을 제공합니다. 이번 포스팅에서는 그중 @EmbeddedId를 사용하여 복합 키를 관리하는 방법에 대해 알아보고, 간단한 예시를 통해 사용법을 소개하겠습니다.@EmbeddedId란?@EmbeddedId는 JPA에서 복합 키를 정의할 때 사용하는 어노테이션입니다. 여러 개의 필드를 묶어 하나의 임베디드 객체로 관리하고, 이를 엔티티의 식별자로 사용할 수 있도록 합니다. 이를 통해 복합 키를 객체로 관리할 수 있으며, 객체지..
대규모 데이터를 다룰 때, 한 번에 모든 데이터를 가져오는 것은 성능 상 문제가 될 수 있습니다. 이때 페이징(Pagination)을 통해 데이터를 나누어 처리하면 메모리 사용량을 줄이고, 서버 성능을 최적화할 수 있습니다. Spring Data JPA에서는 Pageable 인터페이스를 사용하여 간단하게 페이징을 구현할 수 있습니다.이번 포스팅에서는 Pageable의 개념, 사용법, 그리고 페이징과 정렬을 어떻게 적용하는지 살펴보겠습니다.1. Pageable이란?Pageable은 Spring Data JPA에서 제공하는 인터페이스로, 특정 페이지의 데이터를 가져오는 데 필요한 정보를 정의합니다. 페이지 번호, 한 페이지에 포함될 데이터의 개수, 정렬 방식 등을 설정할 수 있습니다. 이와 함께 사용되는 P..
Scheduler(스케줄러)는 애플리케이션에서 특정 작업을 정해진 시간, 간격, 주기로 자동 실행되도록 설정하는 기능입니다. Spring Boot에서는 스케줄러를 사용하여 배치 작업, 정기 보고서 생성, 데이터 백업 등의 반복 작업을 손쉽게 구현할 수 있습니다.Spring Boot에서는 @Scheduled 어노테이션을 활용하여 작업을 쉽게 예약할 수 있습니다. 다양한 표현식과 옵션을 통해 복잡한 스케줄링 요구사항을 간단하게 구현할 수 있습니다.Scheduler의 주요 특징간편한 설정 : @Scheduled 어노테이션을 사용해 간단하게 주기적인 작업을 설정할 수 있습니다.다양한 주기 표현 : 고정된 간격, 특정 시간, cron 표현식 등을 사용하여 다양한 스케줄링이 가능합니다.멀티 스레드 지원 : 멀티 스..