본문 바로가기

springboot8

DB 커넥션 풀과 HikariCP 며칠 전에 면접을 봤는데, 거기서 커넥션 풀에 대한 질문이 나왔다. 그런데 대답을 잘 못해서 아쉽기도 했고, 면접 직후 찾아보니 HikariCP에 대한 이야기도 나오길래 어? 맨날 springboot 켜면 나오는 hikari가 커넥션 풀을 관리해주는 거였어? 하고 관심을 가지게 됐다. 그래서 이번 글은 커넥션 풀과 hikariCP에 대한 소개. DB 커넥션 풀 커넥션 풀은 데이터베이스와 연결된 커넥션을 미리 만들어 풀에서 관리하고, 필요시 이를 사용하고 반환하는 기법이다. 이는 데이터베이스 연결 수행 및 읽기/쓰기 작업에 관련된 오버헤드를 줄이는 것이 주 목적인 데이터 엑세스 패턴이다. 또한 이는, 가장 기본적인 수준의 DB 연결 캐시라고 할 수 있다. 이렇게만 들으면 감이 안올텐데, 일단 예시를 먼저 .. 2021. 10. 14.
jobLauncher로 Job 실행시 runIdIncrementer가 작동하지 않는 경우 이 글은 다음 상황에 대처한 경험을 작성한 글이다. Spring Batch 사용 중, Job을 JobLauncher로 실행했을 때 실행되지 않는 경우를 확인했다. runIdIncrementer가 작동하지 않았음을 확인하고, 이에 대한 조치를 수행했다. Job의 중복 실행 Spring Batch의 경우, Job과 Step에 대한 실행 기록을 DB의 메타 테이블에 저장한다. 그리고 job 실행 시 해당 테이블을 조회하여, 만약 job의 parameter가 이전에 실행된 job의 parameter와 동일하다면 해당 job을 실행하지 않는다. 처음에는 왜 이런 번거로운 옵션이 있을까, 하고 난감했다. 하지만 다시 생각해 보니, 위 옵션을 통해 우리는 아래 상황을 방지할 수 있다. 파라미터 별로 한 번만 수행되어.. 2021. 10. 12.
[SpringBoot] 프로젝트에 Swagger 적용하기 오늘 글은 다음 목적을 바탕으로 작성되었다. SpringBoot 프로젝트의 문서화를 위해 Swagger를 적용한다. Swagger의 다양한 구성과 설정 방법에 대해 알아본다. Swagger를 통해 컨트롤러, 모델, 요청, 응답을 문서화한다. Swagger Swagger란 개발한 REST API를 편리하게 문서화 해주고, 이를 통해서 편리하게 API를 호출해보고 테스트할 수 있는 프로젝트이다. 기본 swagger2 프로젝트 뿐 아니라 다양한 구성을 가지고 있다. MVNRepository에 검색해보자. 본 글에서 다룰 주요 구성은 다음과 같다. SpringFox Swagger 2는 적용된 프로젝트의 응답, 요청, 예시 등의 정보를 JSON 쌍으로 만들어준다. SpringFox UI는 Swagger 2를 통해.. 2021. 9. 6.
[JPA] findAll, findAllBy, findAllByIn AOP로 성능 테스트해보기 오늘 회사원 친구와 JPA 이야기를 하다가, 다음과 같은 질문을 받았다. 회사 코드를 보니까, Repository에서 findAll을 한 다음 stream으로 가공하는 코드가 있었다. 그런데 그 코드는, findAllByXXX로 바꾸면 해결되는 간단한 필터 연산 코드였다. findAll vs findAllByXXX의 시간 효율 차이가 얼마나 날까? 듣고 보니 궁금하기도 하고, 이런 걸 테스트해보고 싶어서 직접 코드를 짜봤다. 본 글에서 수행하는 내용은 다음과 같다. AOP로 타이머를 만들어서 서비스에 씌우고, SpringBootTest로 테스트를 실행한다. findAll, findAllBy, findAllByIn 세 가지를 사용할 때 쿼리가 어떻게 나오나 비교해 본다. 각각의 쿼리에 대한 서비스 차원의 .. 2021. 9. 2.
[SpringBoot] application.properties를 yml로 교체하기 이 글은 다음 목적을 가지고 작성되었다. YAML이 무엇인지 알아본다. 스프링에서 YAML을 어떻게 활용할 수 있는지 알아본다. configuration 파일을 yml 파일로 교체해본다. YAML YAML은 YAML Ain't Markup Language 라는 의미로, 'YAML은 마크업 언어가 아니다'라는 재귀적인 의미를 가진다. 마크업 언어가 아니면 YAML은 무슨 언어라는 것일까? 일단 공식 웹페이지에 가보자. The Official YAML Web Site yaml.org 공식 웹페이지에서는 YAML을 다음과 같이 정의한다. YAML is a human friendly data serialization standard for all programming languages. 해석하자면 다음과 같다:.. 2021. 8. 31.
[SpringBoot] AOP를 활용하는 다양한 방법 https://kafcamus.tistory.com/39 [SpringBoot] 관점 지향 프로그래밍(AOP)이란? 이 글은 다음의 목적을 바탕으로 작성되었다. AOP가 무엇인지 알아본다. AOP를 활용하는 방법을 알아본다. AOP란? AOP는 관점 지향 프로그래밍(Aspect-Oriented Programming)의 약자이다. AOP는 횡단 관심사(cr kafcamus.tistory.com 저번 글에서는 다음과 같은 내용을 다루었다. AOP가 무엇인지 알아본다. Spring에서 AOP를 활용하는 방법을 알아본다. 이번 글에서는, 이에 더해 실제 AOP를 활용한 간단한 예시를 작성해보려고 한다. 커스텀 어노테이션을 구현한다. 어노테이션이 있는 메소드 실행 시, AOP를 실행한다. 결과적으로 로깅 로직을 .. 2021. 8. 30.
반응형