아래의 내용은 토비의 스프링의 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권의 797부터 시작하는 내용을 참고하며 작성하였습니다. 1. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)의 이해 [ AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)의 등장 ] AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)를 이해하기 위해서는 어드바이스(Advice), 포인트컷(PointCut)를 이해해야 한다. 어드바이스(Advice): 타겟 오브젝트에 적용하는 부가 기능을 담은 오브젝트 포인트컷(PointCut): 메소드 선정 알고리즘을 담은 오브젝트 부가기능은 핵심기능과 섞이면 설계와 코드가 지저분해지기 때문에 부가기능을 독립적인 모듈로 만들고자 하는 필요성이 대두되..
이 내용은 토비의 스프링 1권의 797부터 시작하는 내용을 참고하며 작성하였습니다. 1. 도메인 주도 설계 및 개발(도메인 객체 중심 개발) [ 도메인 객체 중심 개발 ] 도메인 객체 중심 아키텍처란 도메인 모델을 반영하는 객체를 만들어두고, 그것을 중심으로 개발하는 아키텍처를 의미한다. 도메인 모델은 DB의 엔티티 설계에도 반영되기 때문에, DB의 엔티티와 유사할 확률이 높다. 물론 DB에는 없고 비즈니스 로직 상에서만 존재하는 모델도 있기 때문에 항상 일치하지는 않을 수 있다. 이렇게 객체를 만들어두고 그 안에 정보를 담아서 각 계층 사이에 전달하게 만드는 것이 도메인 객체 중심 아키텍처이다. 예를 들어 어떤 제품과 카테고리가 있을 때 다음과 같은 도메인 객체가 존재할 수 있다. public clas..