
이번에는 인텔리제이를 사용할 때 유용한 설정 및 플러그인 등을 정리하였습니다. 1. 인텔리제이 설정 [ Author와 Usages 설정 ] 개발을 하다 보면 어떤 코드를 누가 작성했는지, 얼마나 사용되고 있는지 파악하고 싶을 때가 있다. IntelliJ에서 제공하는 기능을 사용하면 코드 위에 이를 표시해준다. Preferences > Editor > Inlay Hints > Code vision > Usages Preferences > Editor > Inlay Hints > Code vision > Code author [ Annotate with blame 설정 ] 개발을 하면서 어느 코드를 누가 언제 작성했는지 확인해야 할 때가 있다. Annotate with Blame을 설정하면 이를 손쉽게 파악..

아래의 내용은 마틴 파울러의 강연 내용을 정리한 것입니다. 1. TDD(Test-Driven Development, 테스트 주도 개발)과 리팩토링 [ TDD(Test-Driven Development) Refactoring ] 리팩토링이 필요한 대표적인 순간은 TDD로 개발할 때이다. TDD 프로세스는 다음과 같다. 기능구현 실패 테스트 → 성공 테스트 새로운 로직들이 추가됨 코드를 잘 짜기 보다는 기능이 동작하는 것이 중요함 리팩토링 중복 코드 제거 및 깔끔하게 정리 기능은 동일하고 새로운 코드를 만듬 테스트 코드를 통해 실수가 없도록 함 TDD가 아니여도 개발 과정은 "기능구현"과 "리팩토링" 두 단계로 나뉘어지는데, 언제든지 두 과정으로 서로 전환할 수 있다. 예를 들어 리팩토링을 하다가 버그를 발..

아래의 내용은 김영한님의 디비 접근 기술 2편 강의와 토비의 스프링 등을 바탕으로 정리한 내용입니다. 1. 트랜잭션의 시작과 종료 및 전파 속성(Transaction Propagation) [ 트랜잭션의 시작과 종료 ] 트랜잭션은 시작 지점과 끝나는 지점이 존재한다. 시작하는 방법은 1가지이지만 끝나는 방법은 2가지이다. 트랜잭션이 끝나는 방법에는 모든 작업을 확정짓는 커밋(commit)과 모든 작업을 무효화하는 롤백(rollback)이 있다. 트랜잭션의 시작 트랜잭션은 하나의 Connection을 가져와 사용하다가 닫는 사이에서 일어난다. 트랜잭션의 시작과 종료는 Connection 객체를 통해 이뤄지기 때문이다. JDBC의 기본 설정은 DB 작업을 수행한 직후에 바로 커밋을 하는 자동 커밋 옵션이 활..
이번에는 자바8에 추가된 CompletableFuture에 대해 알아보도록 하겠습니다. 1. CompletableFuture에 대한 이해 [ Future의 단점 및 한계 ] Java5에 Future가 추가되면서 비동기 작업에 대한 결과값을 반환 받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으로만 가능하다. 또한 비동기 작업의 ..

이번에는 자바5 부터 멀티 쓰레드 기반의 동시성 프로그래밍을 위해 추가된 Executor, ExecutorService, ScheduledExecutorService와 Callable, Future를 살펴보도록 하겠습니다. 1. Callable과 Future 인터페이스에 대한 이해 및 사용법 [ Thread와 Runnable의 단점 및 한계 ] Thread와 Runnable을 직접 사용하는 방식은 다음과 같은 한계점이 있다. 지나치게 저수준의 API(쓰레드의 생성)에 의존함 값의 반환이 불가능 매번 쓰레드 생성과 종료하는 오버헤드가 발생 쓰레드들의 관리가 어려움 먼저 쓰레드를 어떻게 만드는지는 애플리케이션 개발자의 관심과는 거리가 먼데, Thread와 Runnable를 통한 쓰레드의 생성과 실행은 너무 ..