토비의 스프링 정리

토비의 스프링 - 6.9 6장 정리

ksb-dev 2022. 10. 20. 22:27

6.9.1 정리

  1. 트랜잭션 경계설정 코드를 분리해서 별도의 클래스로 만들고, 비즈니스 로직 클래스와 동일한 인터페이스를 구현하면 DI의 확장 기능을 이용해 트랜잭션 부가기능을 만들 수 있음
  2. 트랜잭션처럼 환경과 외부 리소스에 영향을 받는 코드를 분리하면 비즈니스 로직에만 충실한 테스트를 만들 수 있음
  3. 목 오브젝트를 이용하면 쉽게 고립된 테스트를 만들 수 있음
  4. DI를 이용한 트랜잭션 분리는 데코레이터 패턴프록시 패턴으로 이해될 수 있음
  5. 번거로운 프록시 클래스 작성은 JDK 다이내믹 프록시를 이용하면 간단히 만들 수 있음
  6. 다이내믹 프록시는 스태틱 팩토리 메소드를 사용하기 때문에 빈 등록하기 번거로움. 팩토리 빈을 사용하면 되고, 스프링은 자동 프록시 생성 기술에 대한 추상화 서비스를 제공하는 프록시 팩토리 빈을 제공하고 있음
  7. 프록시 팩토리 빈의 설정이 반복되는 문제를 어드바이스포인트컷으로 해결. 자동 프록시 생성기는 어드바이스를 제공하는 프록시를 스프링 컨테이너 초기화 시점에 자동으로 만들어 줌
  8. 포인트컷은 AspectJ 포인트컷 표현식을 사용하면 편리함
  9. AOP는 OOP만으로 모듈화하기 힘든 부가기능을 효과적으로 모듈화하도록 도와주는 기술임
  10. 스프링은 AOP 설정과 트랜잭션 속성을 지정하는 전용 태그를 제공함
  11. AOP를 이용해 트랜잭션 속성 지정을 하는 방법에는 포인트컷 표현식, 메소드 이름 패턴, @Transactional 애노테이션을 사용하는 방식이 있음
  12. @Transactional을 이용한 트랜잭셩 속성을 테스트에 적용하면 쉽게 DB를 사용하는 코드의 테스트를 만들 수 있음