아래의 내용은 토비의 스프링의 2권 2장을 참고해서 작성하였습니다. 1. Spring 트랜잭션의 세부 설정(전파 속성, 격리수준, 읽기전용, 롤백/커밋 예외 등) [ 전파 속성(Propagation) ] Spring이 제공하는 선언적 트랜잭션(트랜잭션 어노테이션, @Transactional)의 장점 중 하나는 여러 트랜잭션 적용 범위를 묶어서 커다란 하나의 트랜잭션 경계를 만들 수 있다는 점이다. 우리는 Spring이 트랜잭션을 어떻게 진행시킬지 결정하도록 전파 속성을 전달해야 하는데, 이를 통해 새로운 트랜잭션을 시작할지 또는 기존의 트랜잭션에 참여할지 등을 결정하게 된다. Spring이 지원하는 전파 속성은 다음의 7가지가 있다. REQUIRED SUPPORTS MANDATORY REQUIRES_NE..
1. 빈을 찾기 위한 다양한 의존성 검색 방법, DL(Dependency LookUp) Spring으로 개발을 하다보면 의존성을 주입(DI, Dependency Injection) 받는 것 뿐만 아니라 의존성을 갖는 빈을 검색(DL, Dependency LookUp)해야 할 때가 있다. 예를 들어 프로토타입 스코프의 빈을 이용해야 하는 경우가 대표적이다. Spring에서는 빈을 검색하기 위한 다양한 방법들을 제공하는데, 크게 5가지가 있다. [ ApplicationContext를 이용한 방법 ] Spring에서는 빈 팩토리를 구현한 DI 컨테이너인 ApplicationContext를 관리하고 있다. 그래서 우리는 ApplicationContext를 통해서 필요로 하는 빈을 다음과 같이 검색할 수 있다. ..
이 내용은 토비의 스프링 2권의 1장 내용을 참고하며 작성하였습니다. 1. 설정 값 분리의 필요성 [ 설정 값 분리의 필요성 ] 개발을 진행하다 보면 데이터베이스 연결 정보나 외부 API 주소 등과 같은 메타 정보들을 관리해야 한다. 해당 메타정보들을 클래스 파일에 넣을 수도 있겠지만 다음과 같은 이유로 프로퍼티 파일(properties)나 야믈 파일(yaml, yml)로 분리해서 관리할 것을 권장한다. 환경에 따라 유연하게 값을 설정할 수 있음 초기값을 설정할 수 있음 불필요한 컴파일을 줄일 수 있음 1. 환경에 따라 유연하게 값을 설정할 수 있음 일반적으로 로컬 환경이나 알파/스테이지 환경 그리고 운영 환경에 따라 서로 다른 데이터베이스 서버를 가지고 있다. 만약 환경에 따라 다른 값을 자바 코드만으..
1. 자주 사용되는 ITerm 단축키 모음(Mac OS) [ ITerm 단축키 모음 ] 전체/부분 선택 Command + Shift + I 가로 분할 Command + D 세로 분할 Command + Shift + D 분할된 오른쪽 탭으로 이동 Command + Shift + ] 분할된 왼쪽 탭으로 이동 Command + Shift + [ 새 창 Command + T 혹시 좋은 단축키 아시면 댓글에 남겨주세요! 추가하도록 하겠습니다:)
1. 변경을 최소화하는 개발, 관심사의 분리와 변하는 것과 변하지 않는 것의 분리 [ 요구사항의 변경 ] 시간이 지나면서 요구사항은 결국 변하게 될 것이고, 우리는 미래의 변화에 대응할 수 있는 설계를 해야 한다. 미래의 변화에 대응할 수 있는 설계를 해야하는 이유는 미래에 소요될 유지보수 시간을 줄이기 위함이다. 설계의 퀄리티에 따라 누군가는 수정사항을 반영하는데 하루가 넘는 시간이 소요될 수 있는 반면, 다른 누군가는 이러한 작업을 단 몇 시간 내에 끝낼 수도 있다. 이러한 이유로 우리는 변경이 일어날 때 필요한 작업을 최소화하고, 그 변경이 다른 곳에 영향을 미치지 않도록 해야 한다. 변경을 최소화하기 위해서는 분리와 확장을 고려한 설계를 해야 한다. 변경에 대한 요청은 한 번에 하나의 관심사항에 ..