토비스프링 6장 AOP (2)
AOP 용어 정리
(1) target (타깃)
- 타깃은 부가기능을 부여할 대상 오브젝트이다.
(2) advice (어드바이스)
- 어드바이스는 타깃에게 제공할 부가기능을 담은 모듈이다.
(3) join point (조인 포인트)
- 조인 포인트는 어드바이스가 적용될 수 있는 위치를 말한다. 스프링에서 조인 포인트는 메소드의 실행 단계이다.
(4) pointcut (포인트컷)
- 어드바이스를 적용할 조인 포인트를 선별하는 작업 또는 그 기능을 정의한 모듈이다.
(5) proxy (프록시)
- 클라이언트와 타깃 사이에 투명하게 존재하면서 부가기능을 제공하는 오브젝트이다.
(6) advisor (어드바이저)
- 포인트컷과 어드바이스를 하나씩 갖고 있는 오브젝트이다.
어떤 부가기능(advice)을 어디에(포인트컷) 전달할 것인가를 알고 있는 AOP의 가장 기본이 되는 모듈이다.
(7) aspect (애스펙트)
- OOP의 클래스와 마찬가지로 애스펙트는 AOP의 기본 모듈이다. 한 개 또는 그 이상의 포인트컷과 어드바이스의 조합으로 만들어진다.
스프링의 어드바이저는 아주 단순한 애스펙트라고도 볼수 있다.
트랜잭션 속성
트랜잭션 전파(propagation)
트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식.REQUIRED
(기본값) : 진행 중인 트랜잭션이 없으면 새로 시작하고, 이미 시작된 트랜잭션이 있으면 이에 참여한다.REQUIRED_NEW
: 항상 새로운 트랜잭션을 시작한다. 즉 앞에서 시작된 트랜잭션이 있든 없든 상관없이 새로운 트랜잭션을 만들어서 독자적으로 동작하게 한다.NOT_SUPPORTED
: 진행중인 트랜잭션이 있어도 무시하고 트랜잭션 없이 동작한다. 특별한 메소드만 트랜잭션 적용에서 제외하려할 때 사용될 수 있다.
격리 수준 (isolation level)
여러 트랜잭션이 진행될 때 다른 트랜잭션 작업에 독립적인 정도. 기본 설정은 ISOLATION_DEFAULT 로 DataSource 에 설정되어 있는 격리 수준을 따른다.제한 시간 (timeout)
기본 설정은 제한 시간이 없는 것이다. 제한 시간 속성은 트랜잭션 시작이 가능한 REQUIRED, REQUIRES_NEW 와 함께 사용할 수 있다.읽기 전용 (read only)
읽기 전용으로 설정하면 트랜잭션 내에서 데이터를 조작할 때 예외를 발생시켜 준다.(Driver의 종류에 따라 예외가 발생하지 않을 수도 있다.)
Reference
- 토비의 스프링 3.1