728x90 반응형 springboot17 [SpringBoot] Redis NOAUTH HELLO must be called with the client already authenticated 이슈 안녕하세요. J4J입니다. 이번 포스팅은 redis에서 발생했던 이슈에 대해 적어보는 시간을 가져보려고 합니다. 이슈 원인 redis를 사용하기 위해 서버 구축부터 시작하여 spring 프로젝트에 다양한 설정들을 추가해볼 수 있습니다. 제목과 관련된 이슈는 여러 가지 설정들을 해보면서 제가 마주했던 것 중 하나입니다. 먼저 저는 spring 프로젝트 내부에 redis 사용 환경 설정을 해보면서 다음과 같은 에러 메세지를 확인할 수 있었습니다. org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redisat org.springframework.data.redis.connection.lettuce.L.. 2024. 6. 30. [SpringBoot] Shedlock을 이용하여 분산 환경 배치 처리하기 안녕하세요. J4J입니다. 이번 포스팅은 shedlock을 이용하여 분산 환경 배치 처리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기[SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행[SpringBoot] SpringBatch 사용하기 (3) - Quartz로 배치 만들기[SpringBoot] SpringBatch 사용하기 (4) - Quartz로 클러스터링 처리하기 Shedlock 이란? shedlock은 분산 환경에서 스케줄링 처리가 된 여러 task 들을 동시에 최대 1번만 .. 2024. 5. 19. [SpringBoot] Layer별 테스트 코드 작성하기 (3) - Controller 테스트 안녕하세요. J4J입니다. 이번 포스팅은 Layer별 테스트 코드 작성하기 마지막인 Controller 테스트하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 [SpringBoot] MockMVC를 이용하여 API 테스트하기 이전 글 [SpringBoot] Layer별 테스트 코드 작성하기 (1) - JPA를 이용한 Repository 테스트 [SpringBoot] Layer별 테스트 코드 작성하기 (2) - Service 테스트 Controller 단위 테스트 controller 쪽에서 작성해 볼 수 있는 테스트 방법 중 하나는 단위 테스트입니다. 단위 테스트는 이전 글에서 작성된 service 테스트에서 확인할 수 있는 것처럼 mock 객체를 활용한 테스트 방식이 될 수 있습니다. moc.. 2024. 2. 7. [SpringBoot] Layer별 테스트 코드 작성하기 (2) - Service 테스트 안녕하세요. J4J입니다. 이번 포스팅은 Layer별 테스트 코드 작성하기 두 번째인 Service 테스트하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] Layer별 테스트 코드 작성하기 (1) - JPA를 이용한 Repository 테스트 Mock 객체와 Mockito service 로직과 관련된 테스트 코드를 작성하기 위해서는 먼저 mock에 대한 개념을 알고 있어야 합니다. 이전 글에서도 간단하게 얘기를 하기는 했지만 spring에서 테스트 코드를 작성하고 실행시킬 때 spring의 동작을 위한 모든 환경을 구성하는 상황이 발생되면 좋지 않습니다. 물론 통합 테스트와 같이 API의 전체 동작에 대한 흐름을 파악할 때는 당연히 구성이 되어야 하지만, 지금처럼 se.. 2024. 2. 4. [SpringBoot] Layer별 테스트 코드 작성하기 (1) - JPA를 이용한 Repository 테스트 안녕하세요. J4J입니다. 이번 포스팅은 Layer별 테스트 코드 작성하는 방법 첫 번째인 JPA를 이용한 Repository 테스트하는 방법에 대해 적어보는 시간을 가져보려고 합니다. JpaRepository 테스트 JPA를 이용하는 환경에서 repository 테스트를 수행할 때 가장 대표적으로 해볼 수 있는 테스트는 JpaRepository 사용에 대한 테스트입니다. JpaRepository를 테스트하기 위해서는 jpa에서 제공해 주는 @DataJpaTest 어노테이션을 활용하면 되는데 해당 어노테이션 내부를 확인해 보면 다음과 같이 다양한 설정 값들이 들어 있는 것을 볼 수 있습니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @.. 2024. 2. 3. [SpringBoot] Spring Boot 3 버전 이후 gradle에 querydsl 사용 환경 설정하기 안녕하세요. J4J입니다. 이번 포스팅은 spring boot 3 버전 이후 gradle에 querydsl 사용 환경 설정하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 [SpringBoot] JPA에서 QueryDSL 사용하기 [SpringBoot] QueryDSL Projections로 결과값 핸들링하기 들어가기에 앞서 Spring Boot의 3버전이 등장하면서 최근에 생성되는 많은 프로젝트들은 3 버전 이상의 환경들을 구성하고는 합니다. 3 버전부터는 3 버전 이전과 설정하는 방법이 달라지기도 하고, 3 버전 이상의 환경에서 설정하는 방법을 더 궁금해하실 것 같아서 querydsl 사용 환경 설정하는 방법만 따로 정리하려고 합니다. querydsl이 무엇인지에 대해 더 궁금하신 분들은.. 2024. 1. 22. [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 첫 번째인 Scheduler를 이용하여 Tasklet, Chunk 배치 만드는 방법에 대해 적어보는 시간을 가져보려고 합니다. SpringBatch란? SpringBatch는 Spring에서 작업해야 되는 대용량 처리들을 반복적으로 수행할 수 있도록 도와주는 배치 프레임워크입니다. 서비스 운영을 하다 보면 사용자의 요청과 관련 없이 일정 시간마다 작업이 이루어져야 하는 것들이 발생하기 마련입니다. 예를 들면, 일정 기간이 지난 사용자들의 계정을 잠김 처리를 수행하던가 또는 매일 발생된 로그들을 이용하여 분석된 결괏값을 새롭게 적재하는 것들이 있습니다. 이런 기능들을 구현할 때 일정 시간마다 개발자가 로직이 동작되도록 작업을 항상 할 .. 2023. 8. 22. [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (1) - Spring 세팅 및 로컬 테스트 안녕하세요. J4J입니다. 이번 포스팅은 AWS Lambda와 API Gateway로 Serverless 구성하기의 첫 번째인 Spring 세팅 및 로컬 테스트에 대해 적어보는 시간을 가져보려고 합니다. Serverless 란? Serverless는 개발자가 서버를 직접 관리하지 않아도 애플리케이션을 배포하여 사용자에게 서비스를 제공해 주는 개발 모델을 의미합니다. Serverless의 특징들은 다음과 같이 있습니다. 개발자는 배포를 위한 부분만 신경쓰도록 도와줌 배포를 제외한 유지 관리 및 스케일링 등을 자체적으로 관리해 줌 사용자가 없으면 활성화되어 있지 않음 사용자가 생기면 활성화되었다가 모든 요청이 처리되면 대기 상태로 전환 서버가 동작되는 시간이 아니라 활성화되어 있는 시간에 비례하여 비용을 계.. 2023. 4. 28. [SpringBoot] 엑셀 파일 생성하여 다운로드하기 안녕하세요. J4J입니다. 이번 포스팅은 엑셀 파일 생성하여 다운로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 엑셀 파일 생성 및 다운로드 방법 [ 1. 의존성 추가 ] org.apache.poi poi 5.2.2 org.apache.poi poi-ooxml 5.2.2 [ 2. Controller 작성 ] package com.excel.controller; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.poi.xssf.usermodel.XSSFFont; impor.. 2023. 1. 18. [SpringBoot] 이메일 발신하기 안녕하세요. J4J입니다. 이번 포스팅은 이메일 발신하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 구글 계정 2단계 인증하기 해당 글은 이메일을 발신할 때 구글 계정을 활용하여 상대방에게 메일을 전달하는 방법을 작성하려고 합니다. 구글 계정을 활용하지 않는 케이스에서는 다른 상황들이 존재할 수 있으니 참고 부탁드립니다. 먼저, 구글 계정으로 이메일을 발신할 때 구글 계정 2단계 인증을 통한 앱 비밀번호를 취득해야 합니다. 앱 비밀번호를 생성하지 않을 경우 올바르게 구현하더라도 동작이 정상적으로 수행되지 않을 수 있습니다. 다음 단계를 거쳐 구글 계정 2단계 인증을 통한 앱 비밀번호를 생성해 보겠습니다. [ 1. 구글 계정 로그인 ] [ 2. Google 계정 접속 ] [ 3. 2단계 인증하기 ] .. 2023. 1. 16. [SpringBoot] AWS S3에 파일 업로드하기 안녕하세요. J4J입니다. 이번 포스팅은 AWS S3에 파일 업로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 Controller에서 파일 데이터를 받을 수 있기 위해 multipartfile을 사용할 예정입니다. 또한 AWS S3 버켓 생성하는 방법은 [AWS] 이미지 저장을 위한 S3 버킷 생성하기를 참고해주시길 바랍니다. S3에 접근할 IAM 계정 생성 가장 먼저 S3에 접근할 수 있는 IAM 계정 생성을 해줘야 합니다. 계정 생성이 완료되면 해당 계정 정보를 SpringBoot에 입력해줄 것이고 이를 기반으로 S3에 접근할 수 있는 사용자인지를 판단할 수 있게 도와줍니다. [ 1. IAM 서비스 접근 ] [ 2. 사용자 추가 클릭 ] [ 3. 사용자 정보 입력 ] .. 2022. 4. 23. [GitLab] GitLab Runner + Docker + Ubuntu 환경 구축 (3) - SpringBoot, Next를 동일 Repository에서 사용할 경우 안녕하세요. J4J입니다. 이번 포스팅은 GitLab Runner + Docker + Ubuntu를 이용한 동일 Repository에 SpringBoot, Next가 존재할 때 환경 구축하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 다음 글을 참고하시면 좋을 것 같습니다. [GitLab] GitLab Runner + Docker + Ubuntu 환경 구축 (1) - SpringBoot [GitLab] GitLab Runner + Docker + Ubuntu 환경 구축 (2) - Next 사전 준비 [ 1. GitLab Runner와 GitLab Repository 연결 ] Runner와 Repository를 연결하는 방법은 [GitLab] GitLab Runner 설치하기 (Ubu.. 2022. 2. 10. [GitLab] GitLab Runner + Docker + Ubuntu 환경 구축 (1) - SpringBoot 안녕하세요. J4J입니다. 이번 포스팅은 GitLab Runner + Docker + Ubuntu를 이용한 SpringBoot 환경 구축하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 다음 글을 참고하시면 좋을 것 같습니다. [Docker] SpringBoot 환경 구축 사전 준비 [ 1. GitLab Runner와 GitLab Repository 연결 ] [GitLab] GitLab Runner 설치하기 (Ubuntu 20.04) 참고 부탁드립니다. 저는 연결된 Repository는 다음과 같이 구성되어 있습니다. [ 2. Dockerfile 내용 수정 ] [Docker] SpringBoot 환경 구축에 작성해 둔 Dockerfile의 수정 작업을 진행해야 합니다. 왜냐하면 링크의.. 2022. 2. 7. [Docker] SpringBoot 환경 구축 안녕하세요. J4J입니다. 이번 포스팅은 SpringBoot 환경 구축하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 다음 글을 참고하시면 좋을 것 같습니다. [Docker] MySQL 환경 구축 사전 준비 [ 1. 소스 코드 ] STS와 같은 IDE를 사용했을 때 동작이 잘 이루어지고 있는 SpringBoot 소스 코드가 필요합니다. 제가 구현한 것은 포스트맨을 이용해 API를 호출해보면 다음과 같은 결과를 만들어줍니다. [ 2. Datasource 설정 ] 해당 부분은 DB 연결을 위해 설정한 Datasource의 url이 localhost로 되어 있는 분들만 참고해주시면 됩니다. Docker를 이용해 SpringBoot를 동작시킬 경우 localhost로 Datasource를 .. 2022. 1. 26. [Spring] Filter를 이용하여 Request Parameter 조작하기 안녕하세요. J4J입니다. 이번 포스팅은 filter를 이용하여 request parameter를 조작하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 최근 회사 업무를 수행하다가 클라이언트로부터 전달받은 parameter를 조작해야 되는 상황이 생겼었습니다. 대표적인 케이스가 parameter 암호화입니다. 보안성을 높이기 위해 클라이언트에서 리소스를 암호화하여 전달하고는 하는데 서버에서 전달받는 리소스마다 복호화하게 될 경우 불필요하고 반복적인 작업이 많아지게 됩니다. 이를 보완하고자 request를 조작하는 filter를 등록하여 클라이언트에서는 암호화된 리소스를 전달했지만 스프링의 비즈니스 로직 구간에서 데이터를 전달받았을 땐 복호화가 되어있도록 하여 재사용성을 높이는 방향을 생각하게 되었습니.. 2021. 11. 11. [SpringBoot] 파일 업로드 - MultipartFile(With. React) 안녕하세요. J4J입니다. 이번 포스팅은 부트에서 multipartFile을 이용한 파일 업로드 방법에 대해 적어보는 시간을 가져보려고 합니다. ※ legacy에서 multipartFile을 이용한 파일 업로드하는 방법이 궁금하신 분은 여기를 참고해주세요. 부트 설정 및 코드 [ 1. application.yml에 multipart 설정해주기 ] spring: servlet: multipart: max-file-size: 20MB #최대 파일 사이즈를 20MB로 지정 참고적으로 max-file-size 말고도 더 다양한 설정값들이 있으니 한 번 확인해보시는 것도 좋을 것 같습니다. [ 2. controller단 ] package com.spring.multipart.controller; import ja.. 2021. 5. 27. [SpringBoot] Boot환경에서 JNDI사용하기 안녕하세요. J4J입니다. 이번 포스팅은 스프링 부트에서 JNDI 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 기존 환경 [ 1. application.yml ] spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/jndi?serverTimezone=UTC username: root password: root ... 기존에는 위와 같이 application.yml에 datasource가 등록되어 있습니다. 그리고 비즈니스 로직 구간도 구성이 되어 있어서 포스트맨에서 API를 호출할 경우 다음과 같이 조회가 되고 있습니다. 이와 동일한 결과가 나오도록 JNDI로 변경해보도록.. 2021. 5. 17. 이전 1 다음 728x90 반응형