728x90 반응형 Spring/SpringBoot60 [SpringBoot] Spring Security를 이용하여 인증/인가 처리하기 (1) - 개념 및 기본 설정 안녕하세요. J4J입니다. 이번 포스팅은 spring security를 이용하여 인증/인가 처리하기 첫 번째인 개념 및 기본 설정에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 해당 글에서 사용되는 spring boot 버전은 다음과 같습니다. boot → 3.2.2 java → 17 인증이란? spring security에 대해 알기 전 가장 먼저 인증에 대한 개념을 알고 있어야 합니다. 인증이라고 하는 것은 서비스에 접근할 수 있는 사용자가 맞는지를 확인하는 과정입니다. 예를 들어, 학생이 학교 내부에 들어가는 것을 얘기해 볼 수 있습니다. 학교를 다니는 학생으로 등록되어 있기 때문에 학교 내부에 들어갈 수 있지만, 학생으로 등록되어 있지 않은 사람이 학교 내부로 들어갈 수는 없습니다. .. 2024. 2. 13. [SpringBoot] properties에 담긴 환경 변수를 클래스로 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 properties에 담긴 환경 변수를 클래스로 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 환경 변수를 클래스로 사용할 수 있는 방법들이 버전 별로 다른 설정을 해줘야 합니다. 제가 테스트를 위해 사용한 버전은 다음과 같으니 글을 보실 때 참고해 주시길 바랍니다. boot 3.2.2 java 17 환경 변수 사용하는 기본적인 방법 spring에서 properties에 담긴 환경 변수를 사용하는 경우는 profile 관리 목적과 암호화 키 같이 외부에 노출되지 않는 변수를 사용하는 목적으로써 많이 활용되고 있을 겁니다. 그리고 환경 변수를 작성하는 파일은 보통 application.properties이거나 application.yml을.. 2024. 2. 8. [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 Validation을 이용한 유효성 검증하기 안녕하세요. J4J입니다. 이번 포스팅은 spring validation을 이용한 유효성 검증하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Spring Validation이란? spring validation은 spring에서 유효성 검증을 하기 위해 도와줍니다. 그리고 여기서 말하는 유효성 검증은 개발된 API의 구조에 맞게 request data가 올바르게 넘어왔는지, 특정 메서드를 호출할 때 사용되어야 하는 paramter 값들이 올바르게 전달되었는지 등을 확인하는 것을 의미합니다. 일반적으로 validation 적용은 controller에서 많이 활용됩니다. client로부터 전달받는 요청은 API 서버 관점에서 예상하지 못한 다양한 케이스가 존재할 수 있기 때문에 유효성 검증이 활발하게 .. 2024. 1. 29. [SpringBoot] Spring Boot 3 버전 이후 gradle에 swagger 사용 환경 설정하기 안녕하세요. J4J입니다. 이번 포스팅은 spring boot 3 버전 이후 gradle에 swagger 사용 환경 설정하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 들어가기에 앞서 Spring Boot 3 버전이 등장하면서 최근에 생성되는 많은 프로젝트들은 3 버전 환경들이 구성되고 있습니다. 3 버전부터는 3 버전 이전과 설정하는 방법이 달라지기 때문에, 3 버전 이상을 사용하시는 분들만 환경 설정 하는 방법을 참고하시면 될 것 같습니다. Swagger란? swagger는 spring에서 사용할 수 있는 API 문서화 도구 중 하나로 개발된 API들에 관련된 정보들을 간편하게 볼 수 있도록 도와줍니다. 일반적으로 swagger를 사용한다고 하면 많이 사용되는 기능이 산출물을 기반으로 한 문서화.. 2024. 1. 27. [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] @Transactional 사용 방식 정리 안녕하세요. J4J입니다. 이번 포스팅은 @Transactional 사용 방식에 대해 적어보는 시간을 가져보려고 합니다. @Transactional이란? @Transactional은 Spring에서 사용 가능한 어노테이션 중 하나로 트랜잭션의 원칙이 지켜질 수 있도록 도와줍니다. 조금 더 단순한 기능에 대해서 말해보면, 비즈니스 로직이 동작되는 과정에서 에러가 발생되면 DB 작업을 모두 롤백을 시켜주고 에러가 발생되지 않으면 DB 작업을 모두 커밋하도록 도와줍니다. 비즈니스 로직에서 트랜잭션 처리가 이루어지는 계층은 Service Layer로 정의되고 있습니다. 즉, Spring 개발을 하다 보면 Controller - Service - Repository의 형태가 구성되기 마련인데 이중 Service .. 2023. 9. 25. [SpringBoot] LocalDateTime 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 LocalDateTime 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. LocalDateTime이란? LocalDateTime은 Java8에서 등장한 클래스 중 하나로 날짜와 관련된 다양한 기능들을 수행할 때 활용할 수 있습니다. Spring을 이용하여 개발 할 때 날짜 타입을 생성하면 보통 Date를 사용해 볼 수 있습니다. 하지만 LocalDateTime이 등장하면서 부터 Date 대신 LocalDateTime의 사용을 권장하고 있습니다. 왜냐하면 Date는 mutable(가변성)하기 때문에 Date 값을 새로운 변수에 담아 값을 수정하게 되면 원본도 함께 변경이 이루어지지만 LocalDateTime은 immutable(불변성)이기 때문에 원본은 변.. 2023. 9. 24. [SpringBoot] i18n을 활용하여 다국어 처리하기 안녕하세요. J4J입니다. 이번 포스팅은 i18n을 활용하여 다국어 처리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. i18n이란? i18n은 국제화하는 기능을 의미합니다. 다른 말로는 세계에 존재하는 다양한 언어들을 서비스 사용자에게 보여줄 때 사용될 수 있는 것을 뜻합니다. 다른 여러 지역의 사용자들이 하나의 서비스를 사용하는 경우는 잦은 일은 아니지만, 만약 이런 유형의 서비스를 제공하기 위해 개발해야 한다면 i18n을 활용하여 다양한 지역의 언어들을 보여주는 기능을 활용해 볼 수 있습니다. 기본 설정 [ 1. properties 파일 인코딩 설정 ] 일반적인 상황에서는 properties 파일 인코딩을 설정하지 않아도 되지만 한글을 적용하기 위해서는 properties 파일 인코딩 설정이 .. 2023. 9. 18. [Springboot] Jacoco를 이용하여 테스트 커버리지 확인하기 안녕하세요. J4J입니다. 이번 포스팅은 Jacoco를 이용하여 테스트 커버리지 확인하는 방법에 대해 적어보는 시간을 가져보려고 합니다. Jacoco란? Jacoco는 제목에서도 알 수 있는 것처럼 Spring에서 개발된 자바 소스의 테스트 커버리지를 확인하기 위해 사용되는 오픈소스 라이브러리입니다. 여기서 커버리지(Coverage) 라고 하는 것은 단어를 해석해 보면 "적용 범위"를 뜻하는 것을 알 수 있으며, 결국 테스트 커버리지라고 하는 것은 테스트 케이스가 작성된 소스 코드 범위를 뜻하는 것을 알 수 있습니다. 즉, Jacoco를 활용한다면 프로젝트에서 작성된 테스트 코드들이 전체 소스 코드 중 어느 수준까지 적용되고 있는 것을 확인할 수 있게 되고 커버리지 비율이 높을수록 전체 소스에 대한 테스.. 2023. 9. 16. [SpringBoot] SpringBatch 사용하기 (4) - Quartz로 클러스터링 처리하기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 마지막인 Quartz로 클러스터링 처리하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 [SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 [SpringBoot] SpringBatch 사용하기 (3) - Quartz로 배치 만들기 클러스터링 적용 방법 이전 글을 통해서도 Quartz를 사용해 볼 수 있었지만 Quartz를 적용했다고 해서 모두 클러스터링이 적용된 것은 아닙니다. 클러스터링을 적용하기 위해서는 SpringBa.. 2023. 9. 10. [SpringBoot] SpringBatch 사용하기 (3) - Quartz로 배치 만들기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 세 번째인 Quartz로 배치 만드는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 [SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 Quartz란? Quartz는 Spring에서 배치 프로세스를 만들 수 있는 오픈소스 라이브러리 중 하나로 작은 단위의 서비스부터 시작하여 큰 규모의 서비스들까지 모두 활용해 볼 수 있습니다. 이전 글들을 확인해보면 Spring Batch를 이용하여 배치를 만들어내는 것들을 볼 수 있었는데,.. 2023. 9. 3. [SpringBoot] SpringBatch 사용하기 (2) - Job Parameter 활용 및 동일 Job 반복 실행 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 두 번째인 Job Parameter 활용 및 동일 Job 반복 실행하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 Parameter 사용 (1) - Tasklet 이전 글에서 Tasklet을 통해 로그 데이터 적재하는 코드를 작성해 봤습니다. 해당 코드를 Parameter 사용하는 소스로 변경해 보겠습니다. 먼저 Job이 수행될 때 활용할 Parameter를 등록하는 곳은 JobLanucher를 이용하여 Job을 등록할 때입니다. 예를 들어, Scheduler가 동작될 때 입력해 둔 Par.. 2023. 8. 26. [SpringBoot] SpringBatch 사용하기 (1) - Scheduler를 이용하여 Tasklet, Chunk 배치 만들기 안녕하세요. J4J입니다. 이번 포스팅은 SpringBatch 사용하기 첫 번째인 Scheduler를 이용하여 Tasklet, Chunk 배치 만드는 방법에 대해 적어보는 시간을 가져보려고 합니다. SpringBatch란? SpringBatch는 Spring에서 작업해야 되는 대용량 처리들을 반복적으로 수행할 수 있도록 도와주는 배치 프레임워크입니다. 서비스 운영을 하다 보면 사용자의 요청과 관련 없이 일정 시간마다 작업이 이루어져야 하는 것들이 발생하기 마련입니다. 예를 들면, 일정 기간이 지난 사용자들의 계정을 잠김 처리를 수행하던가 또는 매일 발생된 로그들을 이용하여 분석된 결괏값을 새롭게 적재하는 것들이 있습니다. 이런 기능들을 구현할 때 일정 시간마다 개발자가 로직이 동작되도록 작업을 항상 할 .. 2023. 8. 22. [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (4) - GitLab으로 Lambda 자동배포하기 안녕하세요. J4J입니다. 이번 포스팅은 AWS Lambda와 API Gateway로 Serverless 구성하기 마지막인 GitLab으로 Lambda 자동배포하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (1) - Spring 세팅 및 로컬 테스트 [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (2) - Lambda 생성해서 배포하기 [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (3) - API Gateway에 Lambda 연결하기 IAM 설정 [ 1. IAM 접속 ] [ 2. 사용자 추가 .. 2023. 5. 10. [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (2) - Lambda 생성해서 배포하기 안녕하세요. J4J입니다. 이번 포스팅은 AWS Lambda와 API Gateway로 Serverless 구성하기 두 번째인 Lambda 생성해서 배포하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 글 [SpringBoot] AWS Lambda와 API Gateway로 Serverless 구성하기 (1) - Spring 세팅 및 로컬 테스트 Spring 세팅 이전 글을 확인해보시면 로컬에서 Lambda에 배포할 Spring 코드를 작성하여 테스트한 것을 확인해 볼 수 있습니다. 해당 설정을 기반으로 Lambda에 배포하기 위한 추가 설정을 다음과 같이 진행해보겠습니다. [ 1. 의존성 추가 ] // Lambda Deploy import com.github.jengelman.gradle.plug.. 2023. 4. 30. 이전 1 2 3 4 다음 728x90 반응형