일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PAGING
- bean
- spring
- ECS
- Spring Data JPA
- offsetdatetime
- transactionaleventlistener
- Kotlin
- topic생성
- cd
- producer
- spring kafka
- Streams
- CodePipeline
- entity graph
- CI
- centos7
- mirror maker2
- QueryDSL
- API
- AWS
- mysql
- JPA
- Entity
- kafka
- K8s
- Spring JPA
- consumer
- git
- Kubernetes
- Today
- Total
목록Spring (34)
Yebali

회사에서 테스트 코드를 병렬 처리 설정을 넣고 Codebuild를 돌렸더니 아래처럼 에러가 발생했다. 심지어 매번 돌릴 때마다 결과가 달라져 동시성 문제인 것을 예상할 수 있었다. 문제의 테스트 코드 @ExtendWith(MockKExtension::class) class TestServiceTest { ... @InjectMockKs private lateinit var service: TestService @BeforeEach fun initTest() { // for LocalDate.now() Mocking mockkStatic(LocalDate::class) ... } @Test fun Test_A() { ... every { LocalDate.now(ZoneOffset.ofHours(9)) }..

필터(Filter)란? 필터(Filter)는 J2EE표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹컨테이너에 의해 관리가 되므로 디스패처 서블릿으로 가기 전에 요청을 처리하는 것이다. 일반적으로 클라이언트와 자원 사이에는 1개의 필터가 존재하지만, 여러 개의 필터가 모여 필터 체인(Filter Chain)을 형성하기도 한다. 또한 필터는 요청/응답 정보를 변경하는 역할뿐 아니라 흐름을 변경하는 역할도 할 수 있다. 즉 필터는 클라이언트의 요청을 필터 체인의 다음 단계에 보내는 것이 아니라, 다른 자원의 결과를 클라이언트에 전송할 ..

데이터 베이스는 다양한 테이블에 데이터를 나누어 담는다. 우리는 필요에 따라 각 테이블에 있는 데이터를 조합하여 하나의 데이터 셋으로 만들어야 하는 경우가 빈번히 있다. Join의 종류와 해당 Join방법들을 QueryDsl을 이용해 구현하는 방법을 알아보자. Entity 예시 Entity는 'Team'과 'Member'를 사용할 것이며, 1:N 관계이다. @Entity class Team ( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long, val name: String, @OneToMany(mappedBy = "team") val members: MutableList = mutableListOf(), ) @Entity clas..

QueryDSL이란? 기존 JPA Criterial는 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 IDE 자동완성 기느의 도움을 받을 수 있는 등 여러 가지 장점이 있다. 하지만 너무 복잡하고 어렵다. 쿼리를 문자가 아닌 코드로 작성해도 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발 할 수 있는 프로젝트가 바로 QueryDSL이다. QueryDSL 설정 build.gradle.kts에 아래 설정을 추가해준다. Version은 개발자가 원하는 버전을 선택한다. plugins { kotlin("kapt") version "1.4.32" } dependencies { val querydslVersion = "4.4.0" //== QueryDSL ==// implementation("..

Cache란? 일반적으로 Cache는 자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소를 말한다. 흔히 우리가 사용하는 폰-노이만 구조의 PC에서 cache는 CPU 내부에 있는 수 KB, MB 내외의 작은 저장 공간이 Cache이다. (Register, L1/L2 Cache, RAM 등) Cache는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. Cache의 장점 다양한 장점이 있지만 가장 큰 장점은 빠르다는 것이다. 예를 들어 집에서 삼겹살을 먹으려고 할 때, 상추를 텃밭에서 뜯어오는 것과 마트에 가서 사 오는 것 중 어느 것이 빠르겠는가? → 당연히 텃밭에서 뜯어오는게 빠르다. CPU가 연산을 하기 위해서는 연산에 필요한 값들이 필요하다. 그렇다면 이 값들을 어딘가로부터 불러와야 하..

인프런에서 김영한 님의 강의를 들으면서 “JPA의 Entity객체에는 기본 생성자가 있어야 한다”라는 말을 들은 적이 있다. 왜 그런건지 알아보자. java Reflection 위의 이유를 알기 위해서는 먼저 java Reflection를 알아야 한다. java Reflection이란? '구체적인 클래스 타입을 알지 못해도, 그 클래스의 메서드, 타입 변수들에 접근할 수 있도록 해주는 API'이다. 예를 들면 public class Music { private String singer; private String title; public Music(String singer, String title) { this.singer = singer; this.title = title; } public Music(..