Annotation Attribute Value 변경하기
최근 개발을 진행하면서 Custom Annotation을 활용하게 되었는데, Annotation Attribute 값에 System Property Key를 지정하여 해당 값을 가져와 Annotation의 다른 Attribute에 주입해야만 하는 일이 생겼다. 확인해보...
Spring Framework IoC, DI란
Spring 을 사용하다보면 필연적으로 IoC와 DI란 용어를 접하게 된다. 그러나 IoC와 DI를 제대로 이해하고 사용하는가에 대해 물어본다면 사실 그렇지 않다라고 대부분의 개발자는 이야기할 것이다. 본 포스트에서는 이러한 Spring 의 IoC와 DI의 개념과 동작...
Cache-Control에 대하여
어플리케이션을 개발하다보면 성능이 중요한 경우가 많다. 성능을 개선하기 위해서는 다양한 방법이 존재하는데, 그 중 가장 쉽게 적용할 수 있으며, 효율이 높은 방법 중에 하나는 캐시(Cache)일 것이다. 다양한 캐시 적용법이 있지만, 본 포스트에서는 클라이언트 브라우저...
Java HashMap 동작 원리
Java를 통해 개발을 할 경우 HashMap을 자주 사용하게 된다. 이에 HashMap의 동작 원리 및 Hash 충돌해결에 대해 정리할 에정이다. ## 개념 HashMap은 Key-Value가 1:1로 Mapping 되는 자료구조이며, Mapping으로 인해 삽입, ...
enum 보다 잘 활용하기
개발을 진행하다보면, 정해진 코드 값이나 패턴 등 정형화된 케이스에 대한 처리가 이루어지는 경우가 많다. 이러한 경우 보통 enum을 활용하는데, 이번 포스트는 이번에 알게되었고, 사용한 enum의 활용법에 이야기 해보려 한다. ## enum의 특징 enum을 활용함에...
Spring Boot를 Docker 환경으로 개발/디버깅 하기
Spring Boot를 Docker 환경에서 개발 및 디버깅을 하기 위한 방법을 정리한다. ### Dockerfile 만들기 ```dockerfile FROM openjdk:13-jdk # 기본 이미지 LABEL maintainer="jiys@tidesquare.com...
다중 데이터 소스를 통한 동적 MyBatis Mapper Scanner 생성
어플리케이션을 개발하다보면 다중 Data Source를 사용해야 하는 경우가 생각보다 많다.<br> 일반적으로 MyBatis를 통해 Database 개발을 하기 위해서는 보통은 다음과 같은 절차를 통해 개발을 진행한다. 1. Data Source 정의 2. Sessio...
BeanDefinitionRegistryPostProcessor의 사용
Spring에서 어플리케이션이 시작될 때 동적으로 Bean을 생성하기 위해서는 다양한 방법이 존재한다. 앞서에는 Application Context 의 Event Listener를 통해 동적 Bean을 생성하는 방법을 소개한 적이 있는데, 이번에는 `BeanDefini...
JMH(Java Microbenchmark Harness) 사용법
개발을 진행하다가 보면, 성능문제를 해결해야 하는 경우는 매우 많다. 성능 문제를 해결하기 위해서는 우선 성능을 측정해야하며, 성능을 측정하는 방법와 도구는 셀수도 없이 많다.<br> 대부분의 경우 개발환경 또는 운영환경에 어플리케이션이 배포가 되고, Stress Te...
Spring Boot Application Context Event
**[상황]** >어플리케이션을 개발하다보니 다중 Data Source의 사용이 필요하다. >먼저 Data Source를 정의하고, Data Source와 연결되는 SessionFactory, SessionTemplate, TransactionManager를 >각각 정...