전체 글

하루 한권 책으로 떠나는 개발여행
@Qualifier 사용해 보자! 들어가며개발을 하다 보면 종종 여러 구현체가 동일한 인터페이스를 구현하게 됩니다. 이럴 때 어떤 구현체를 사용할지에 대해서 지정해 주는 에노테이션입니다. 이번 포스팅에서는 사용방법에 대해서 알아보도록 하겠습니다. @Qualifier이란 @Qualifier 어노테이션은 DI할때 어떤 빈을 등록할 것인지를 명시해 줄 때 사용됩니다. 하지만  기본적으로는 @Autowired을 통해서 DI를 하게 되지만, 동인 한 인터페이스를 가진 구현체가 있을대 @Autowired를 사용하게 되면 빈이 유일하지 않다는 NoUniqueBeanDefinitionException 예외를 발생하게 됩니다.  이럴 때에 구현체를 지정해 주기 때문에 예외를 피할 수 있습니다.즉  👉🏻 동일한 Int..
· 오류관련
오류 발생롬복의  @RequiredArgsConstructor을 통해 생성자 주입을 아주 편리하게 사용하고 있는 도중에동일한 인터페에스를 사용하는 여러 구현체가 있어서  @Qualifier오류가 뜬것이 아닌가.......(┬┬﹏┬┬)그래서 찾아보니.  @RequiredArgsConstructor 어노테이션은 final이거나 @NonNull이 붙은 필드에 대해 생성자를 자동으로 만들어 주기 때문에 @Qualifier 어노테이션이 붙은 필드에 대해서는 @Qualifier 어노테이션을 생성자의 매개변수에 복사하지 않기 때문에 생성자를 주입할 수 없는 오류가 발생했던 것이다.. 해결책Lombock.config 파일의 다음과 같은 설정을 추가해 주고 Rebuild Project를 해주면 된다.lombok.copy..
· MySQL
MySQL에서 데이터를 Import 및 Export 해보자!  들어가며로컬 환경에서 작업한 데이터를 AWS 또는 다른 데이터베이스(DB)로 효율적으로 이관하는 방법을 LOAD DATA INFILE을 사용하는 방법이 있습니다. 이 방법은 데이터를 빠르게 로드할 수 있어 사용하는 방법을 한번 알아보도록 하겠습니다. 설정 확인하기LOAD DATA INFILE을 사용하기 전에 먼저 환경 설정을 확인해야 합니다.SHOW VARIABLES LIKE 'local_infile'; 위 명령어를 통해 해당 Mysql의 설정 정보를 확인해 줍니다. 만약 Value가 Off로 되어있다면 아래 명령어를 입력해 On으로 변경해줍니다.SET GLOBAL local_infile=1; 설정파일 변경 시(Windows 기준)C:\Pro..
SSE를 이용한 실시간 알림을 구현해 보자  들어가며팀 프로젝트를 진행하던 중, 댓글이나 좋아요가 달렸을 때 사용자에게 실시간으로 알림을 제공하는 기능의 필요성을 느끼게 되었습니다. 인스타그램이나 유튜브와 같은 플랫폼에서는 이러한 실시간 알림을 통해 사용자에게 새로운 활동을 즉시 알려줍니다. 원래 계획에는 없었지만, 팀원들과 상의 끝에 실시간 알림 기능을 추가하기로 결정했습니다.실시간 알림 기능을 구현하기 위해 두 가지 주요 방식이 있습니다: WebSocket과 SSE(Server-Sent Events). 이 중, 우리는 SSE 방식을 선택했습니다. 선택한 이유와 구현 방법에 대해 작성해 보도록 하겠습니다.   SSE  VS  WebsoketWebSocket 웹 소켓이란 서로 양뱡향으로 유지한 채로 실시..
직접 Custom 어노테이션을 만들어서 사용해 보자  들어가며프로젝트 진행 중에 기본적으로 제공되지 않는 @Valid 외에도 추가적인 검증이 필요한 필드가 있었습니다. 따라서 직접 검증을 수행할 수 있는 커스텀 어노테이션을 만들어 보겠습니다. 이를 통해 @Valid 어노테이션을 사용하는 방법을 알아보겠습니다. @Valid@Valid 어노테이션은 자바에서 Bean Validation API에서 제공되는 어노테이션 중 하나로, 주로 객체 그래프 내의 객체들에 대한 유효성 검사를 수행할 때 사용됩니다. 기본적으로 지원하는 어노테이션은  @NotNull: 필드가 null이 아닌지 확인@Size: 문자열, 컬렉션 또는 배열의 크기를 검사@Min, @Max: 숫자 필드의 최솟값 및 최댓값을 검사@Pattern: 문..
· Devops/AWS
서버 내부의 이미지 파일을 저장해 보자  들어가며프로젝트를 진행하는 동안, 이미지 파일을 배포 서버에 저장하는 등록 API를 구현하게 되었습니다. 초기 개발 단계에서는 S3를 이용하여 이미지를 업로드하는 것이 필요하지만, 이는 취업 준비생에게는 추가적인 비용이 발생하므로 부담이 될 수 있습니다. 그래서, 서버 내부에 직접 이미지를 저장하는 방법을 탐색하려고 합니다  서버 내부의 장, 단점S3와 같은 클라우드 스토리지를 사용하지 않고 배포된 서버 내부의 이미지 파일을 저장하게 되면 장단점이 존재합니다. 먼저 장담 전에 대해서 알아보도록 하겠습니다.장점빠른 액세스 : 이미지가 서버내부의 저장되어 있기 때문에 적은 네트워크를 통해 데이터를 불러올 수 있습니다.보안 : 서버 내부의 이미지를 저장하기 때문에 나름..
· JPA
QueryDsl를 이용해 무한 페이징을 알아보며 성능 개선 방법 알아보자  들어가며프로젝트 중에 내 정보 페이지에서 사용자가 작성한 데이터를 페이징 처리해야 기능을 맡게 되었으며, 내 정보 페이지에서 사영되는 페이징 방식은 무한 스크롤 방식으로 구현되어야 했기 때문에 무한 스크롤 방식을 구현하는 방법을 알아보도록 하겠습니다. 또한 AWS에서 조회 시 첫 번째 페이지에서 조회하는데도 무척이나 느린 모습을 보였다. 그래서 성능 개선한 방법을 알아보도록 하겠습니다. 페이징 이란?대량의 데이터를 한 페이지에 표시하는 것은 현실적으로 불가능합니다. 키보드와 관련된 10만 건의 데이터를 모두 한꺼번에 화면에 표시하려고 하면, 일반적인 27인치 모니터의 해상도로는 각 데이터를 표시하기에 충분한 공간이 없습니다. 물론..
Springdoc의 스웨거(Swaager)를 사용해 보자 들어가며 팀 프로젝트를 진행하면서 API 문서를 작성하기 위해 노션을 사용했었지만, 직접 작성하는 과정에서 불편함을 느꼈습니다. 또한, 프런트엔드 개발자로서 API가 올바르게 작동하는지 확인하는 과정에서도 어려움을 겪었습니다. 이런 어려움을 해결하기 위해 Swagger를 사용하여 API 명세서를 작성하게 되었습니다. Springdoc-openAPI 스웨거란? Spring 프레임워크 기반의 RestFul API를 문서화하기 위한 Open API입니다. 그리고 스프링 구성, 클래스 구조 및 다양한 주석을 기반으로 API 의미를 추론하기 위해 런타임에 애플리케이션을 검사하는 방식으로 작동합니다. JSON/YAML 및 HTML 형식 API로 문서를 자동으..
코드기록사
A steady developer