본문 바로가기

전체 글20

xml to java config 기반으로 전환 Springboot 가 아닌 Spring Framework 프로젝트들은 xml 기반으로 config 를 관리하는 경우가 많을 수 있습니다. 이번 글에서는 xml 기반으로 작성된 프로젝트를 java config 기반의 프로젝트로 마이그레이션 해보겠습니다. project 소스 코드는 github 에 있고, commit 단위로 마이그레이션을 따라가보시는 것을 추천드립니다 https://github.com/HaJaeKwon/spring-migration-xml-to-java/commits/master 목표 레거시 프로젝트와 유사한 환경을 구성해봅니다. xml 기반의 Spring Framework 프로젝트를 java config 기반의 프로젝트로 변경합니다. Spring Framework 4.2.16 -> 5.0.. 2020. 8. 16.
Spring JDK Dynamic Proxy vs CGLIB 차이점 회사에 입사 후 서비스 중인 Spring 프로젝트들의 코드를 보면 구현체가 하나이지만 인터페이스를 같이 정의해둔 Service 클래스들을 볼 수 있었습니다. 그 당시에는 왜 굳이 인터페이스도 같이 만들어줘야 하는지, (Spring boot 2.X 기준으로) 이제는 왜 같이 안만들어줘도 되는지 몰랐지만, 이제 알게되어 정리를 해봅니다. Proxy 객체 Spring IoC 컨테이너에서는 내부적으로 빈에 대한 Proxy 객체를 생성하여 관리하고 있습니다. 대표적으로 @Async, @Transaction 어노테이션을 사용하게 되면 Proxy 객체가 생성되고, 해당 메소드를 호출하게 되면 실제로는 Proxy 객체의 메소드가 호출되어 비동기나 트랜잭션 로직을 수행하게 됩니다. 이때 Proxy 객체를 생성하는 방법은.. 2020. 6. 14.
결합 인덱스와 단일 칼럼 인덱스 (Oracle) http://www.gurubee.net/expert/kwontra 를 읽고 정리한 글 SQL의 성능은 처리범위에 좌우된다 읽는 block의 수가 적어야한다 읽는 block의 수를 줄이기 위해서는 인덱스를 잘 구성해야 한다 block의 수 : 결합 칼럼 인덱스 < 단일 칼럼 인덱스 결합인덱스 구성시 고려해야 하는 순서 칼럼이 사용한 연산자에 의한 칼럼 선정 랜덤 엑세스를 고려한 인덱스 칼럼 선정 확인 랜덤 엑세스 where, having 조건의 칼럼이 인덱스에 없어서 발생 결과와 같거나 더 많은 데이터를 랜덤 엑세스 인덱스 조정이 필요 (새로 만들거나..기존의 것에 추가하거나) 추출 랜덤 엑세스 select 절의 칼럼이 index에 없어서 발생 결과와 같은 데이터를 랜덤 엑세스 다음과 같은 쿼리 변경으로.. 2020. 5. 31.
Egg Drop Puzzle Egg Drop Puzzle http://datagenetics.com/blog/july22012/index.html 달걀이 2개 있을 때 100층 높이의 탑의 달걀이 떨어지는 어느 장소를 달걀을 최소 횟수로 떨어뜨리며 찾는 문제이다. 달걀이 1개 밖에 없다고 생각해보자 1층 부터 100층까지 모든 층에서 달걀을 던져 볼 수 밖에 없다. 달걀이 무한개라고 생각해보자 2진 탐색으로 했을 때 최소 횟수로 알 수 있다. log2 100 = 6.644 .. 정도가 된다. 이 횟수보다 최소로 알아 낼 수는 없다. 돌아와서 달걀이 2개 있다고 생각해보자 10칸씩 전진한다고 생각해보자 100층에서 달걀이 깨진다면 10,20, …, 90, 100 에 떨어뜨려보고 10번만에 알 수 있다. 그런데 달걀이 99층에서 깨진다.. 2020. 5. 30.