본문 바로가기
반응형

개발 지식/Spring Framework
반응형
13

[Spring] Coroutine Suspend Cache Hit 가 되지 않다. https://erjuer.tistory.com/131 [Spring] Caffeine Cache Config 설정하기 Caffeine Cache Config값은 두가지의 방법으로 설정할 수 있다. 1) application.yml -> yml에 등록만 해주면 spring이 알아서 cache 등록을 해준다. 2) Config Custom Bean 생성 -> 캐시가 여러개 일 경우 각각의 Config Poli erjuer.tistory.com 에서 Caffeine 캐시를 등록하고 이제 캐시를 활용해보고자 하였다. 실무 개발을 진행하며서 Spring Boot에서 제공하는 어노테이션 @Cacheable("")를 사용해여 DB 조회를 매번 하는 것이 아니라 캐시를 통해서 조회 쿼리를 최소화 하려고 하였으나 hi.. 2023. 2. 11.
[Spring] Caffeine Cache Config 설정하기 Caffeine Cache Config값은 두가지의 방법으로 설정할 수 있다. 1) application.yml -> yml에 등록만 해주면 spring이 알아서 cache 등록을 해준다. 2) Config Custom Bean 생성 -> 캐시가 여러개 일 경우 각각의 Config Policy(정책) 설정 가능 일단 들어가기에 앞서 gradle을 등록해두자. (https://github.com/ben-manes/caffeine) //caffeine cache 설정 implementation("com.github.ben-manes.caffeine:caffeine:3.1.2") 1. application.yml spring: data: mongodb: database: mser # username: # pa.. 2023. 2. 5.
[Spring] 구글 smtp 서버를 활용한 메일 보내기 사이드 프로젝트 중 메일 인증을 통한 유저 회원가입 구현이 필요하여 구글 메일 서버를 이용한 메일 발송에 대해 적어보고 후에 잊어버렸을 경우 다시 보기 위해 정리하고자 한다. 회원 인증에는 실명인증 및 인증서 인증 여러가지가 있는데 소규모 프로젝트에서는 메일 인증이 제일 간단한 것 같다. Spring을 활용하면 다음과 같이 간단히 설정을 진행할 수 있다. 1. Application yml 작성하기 (https://support.google.com/a/answer/176600?hl=en) spring: mail: protocol: smtp host: smtp.gmail.com port: 587 username: ${user.name} password: $[user.password} default-encod.. 2023. 1. 15.
[Reactive Mongo] Reactive MongoDB QueryDSL 버전 충돌 22.08.22 기준 latest version querydsl-mongodb (5.0.0) -> mongo-java-driver (3.12.11) org.mongodb:mongodb-driver-reactivestreams (4.7.1) -> mongodb-driver-core (4.7.1) MongoDB 3.X -> org.mongodb:mongo-java-driver 사용 MongoDB 4.X -> org.mongodb:mongodb-driver-core 사용 reactiveMongo로 QueryDSL 사용은 mongoclient 버전이 맞지 않아 쓸 수 없다. https://github.com/querydsl/querydsl/issues/3134 Legacy MongoDB driver includ.. 2022. 8. 22.
[Test] MongoDB 단위 테스트(Unit Test) 작성해보기 Spring Boot 프레임워크에서 Test 파일을 작성하다보면 다음과 같은 어노테이션을 붙여서 작성하곤 한다. @SpringBootTest 하지만 해당 어노테이션은 프로젝트 내에서 선언하거나 사용하고 있는 Spring Context를 모두 IoC에 등록하기 때문에 비용 및 시간이 많이 소모 된다. 통합 테스트 시나리오에서는 적절할지 모르겠으나 Repository 또는 DB간 트랜잭션 단위 또는 서비스 레이어 내에서의 단위 테스트에는 적절하지 않다고 생각한다. 이에 이번에 Repository 테스트 즉 MongoDB 조회를 하는 단위테스트 작성 및 정리하고자 한다. 1. @SpringBootTest 사용하기 우선 SpringBootTest 어노테이션을 붙여 테스트 진행시 Spring Context를 전부.. 2022. 6. 6.
[Spring] SpringBoot + WebFlux + Kotlin + ReactiveMongo 프로젝트 생성 실무 개발 및 서비스를 제공함에 있어 서버에 많은 요청이 있을 경우 Tread Pool 과 Timeout 등 Spring Web의 설정을 각 상황마다 수정하곤 하였다. 이에 Spring 5부터 등장한 Reactvie 스타일 모듈인 Webflux에 대해 관심이 생기기 시작하였고 간단한 Sample Case 맛보기 정도로 진행해보려한다. 앞으로 이 토이 프로젝트에 관심 있는 여러가지 모듈 및 프로토콜 들을 더해 갈 예정이다. Project SDK로는 amazon에서 제공하는 corretto-11을 사용하였다. corretto는 OpenJDK로 Java SE 표준과 호환된다. 또한 Dependencies는 다음과 같이 설정하였다. Webflux를 MVC 모듈로 비교하자면 MVC : Controller - Se.. 2022. 5. 1.
[Test] Controller Test mockMvc 활용 실무 개발을 진행하면서 배포 Branch에 Merge Request를 하기 위해서는 필수적으로 Test 파일을 작성해야 했다. 많은 테스트 방법들을 배우고 있지만 그 중 API Controller 테스트 방법 중 하나인 mockMvc를 활용하게 되었고 이를 정리하려고 한다. (개발자 단위 테스트, 통합 테스트 구별할 것..) mockMvc 이란 무엇일까? Controller 테스트를 위해 서버에 애플리케이션을 배포하지 않아도 MVC 패턴 및 동작을 테스트 할 수 있는 클래스이다. 말 그대로 mockMvc MVC 패턴의 mock 형태라고 이해하면 될 것 같다. 코드로 직접 확인해보자 일단 Test 진행할 컨트롤러는 다음과 같다. @Slf4j @RestController public class APICont.. 2022. 4. 26.
[thymeleaf] 기본 기능 정리 - 01 01, 02, 03, 04에 걸쳐 thymeleaf를 간단히 정리하고자 한다. 인프런에서 영한님의 인프런 강의를 듣고 있는데 thymeleaf 부분을 강의하신 내용이 있었다. 강의 내에서 서버 개발자더라도 SSR thymeleaf 엔진을 아는 것이 좋다고 말씀하시고 MVC 강의 첫번째 부분이 thymeleaf 내용으로 진행되는데 블로그에 해당 내용을 정리해 보고자 한다. 더 자세한 사항과 내용은 인프런 강의를 듣는걸로,, (Project 생성 및 thymeleaf 설정까지는 생략한다.) 1-1. 텍스트 - text 보통 JSP를 활용하여 서버에서 전달받은 변수값을 사용하기 위해서는 [[${message}]]"; 이런식의 변수선언을 해준다. thymeleaf에서는 다양한 표현식을 통해 이를 나타낸수 있다... 2021. 12. 16.
[JWT] Spring Boot 환경에서 JWT(Json Web Token)생성 하기 첫번째의 JWT는 JWT에 대한 간단한 설명을 정리했고 2번째는 Spring Boot 환경에서 JWT를 직접 생성해보고자 한다. 사실 JWT 생성은 https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 해당 홈페이지에서 직접 PayLoad값을 넣어가며 생성할 수 있다. 하지만 실무 백엔드에서 JWT를 활용할 수 있는 간단한 JWT 생성코드를 정리해 보고자한다. 생성에는 jjwt 플러그인을 활용하였다. 1. build.gradle 설정에 io.jsonwebtoken:jjwt 플러그인을 추가한다. im.. 2021. 10. 26.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 04 2021.09.24 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Fra.. erjuer.tistory.com 이어서 이번 포스팅은 Session을 set하고 get하는 API를 하나 뚫어놓고 redi.. 2021. 9. 26.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개.. erjuer.tistory.com 이어서 Spring Boot Framework에 설정은 다 완료했고 실제 redis를 조회하기 위한 redis.. 2021. 9. 24.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐 erjuer.tistory.com 이어서 우선 Spring session으로 redis를 활용하기 위해서 프로젝트의 pom.xml 또는 build.gradle에 의존성을 추가한다. // pom.xml org.springframework.session spring-.. 2021. 9. 23.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐가 MSA로 구성되어 있다보니 각각의 서비스별로 데이터를 관리해야 했고 내가 맡은 서비스 내에서 매번 고객 데이터 조회시 로그인 유저의 권한을 바탕으로 필터링을 해야 했다. 유저의 데이터는 타 서비스의 API 호출을 통해 얻을 수 있었는데 매번 고객 데이터 조회 시 유저 데이터의 API 호출 하는 것은 그 호출 시간 또한 전체 고객 데이터 조회하는 시간에 추가 되어 아주 바람직하지 못한 방법이라 생각했다. 그래서 효과적인 방법을 고민하다가 유저 데이터값들을 session에 보관하고 필요할 때 꺼내쓰는 방법을 생각했다. pac.. 2021. 9. 22.