AOP
비즈니스 메서드(비즈니스 로직, 핵심 관심, CRUD)에서 횡단 관심 (공통 로직)을 분리
관심 분리(Separation of Concern)
C : 인증 로깅 C 트랜잭션 예외처리
R : 로깅 R
U : 인증 로깅 보안 U 트랜잭션 예외처리
D : 인증 로깅 보안 D 트랜잭션 예외처리
공통 로직이 있다
횡단 관심
지금까진 한번에 처리했지만
다른파트에서 사용하는 것이 있다면
분리해서 관리를 하겠다 : AOP의 시작
로직(관심)들끼리 코드를 관리 -> 높은 응집도를 보장할 수 있다
진행순서
항상 찍는 로그는 공통 로직이네?
Advice 클래스로 분리 == 관심 분리
Advice(공통로직을 뜻함)
Advic를 Service의 멤버변수로 설정
멤버변수로 설정하면 무엇이 발생하냐?
의존관계 발생
뭔가 맴버변수로 설정하게 되면 의존관계가 발생한다
비즈니스 로직 수행 전에 호출
그래서 로그를 메서드 호출시마다 출력되게하였다
하지만 모든 메서드가 실행될때 찍고 싶었다
그래서 설정파일 .xml로 한번에 처리를 해보겠다
AOP를 사용하려면 추가해야 하는것
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"
조인 포인트
어플리케이션에 존재하는 ★모든 비즈니스 메서드
포인트 컷<=조인포인트에서 골라서 만든것
횡단관심을 연결할 비즈니스 메서드
<aop:config>
<aop:pointcut expression="execution(* cohttp://m.spring.biz..*Impl.*(..))"></aop:pointcut>
</aop:config>
* cohttp://m.spring.biz..*Impl.*(..)
리턴 상관없음
Impl로 끝나는 것
.. : 인자 아무거나
횡단관심을 연결할 비즈니스 메서드를 포인트컷이라고 부른다
애스팩트(aspect)
포인트컷(핵심로직)과 어드바이스(황단관심)의 조합
포인트컷과 어드바이스의 결합(위빙,weave)
포인트컷과 어드바이스를 애스팩트처리
<aop:pointcut id="aPointcut" expression="execution(* cohttp://m.spring.biz..*Impl.*(..))" />
<aop:aspect ref="logAdvice">
<aop:before pointcut-ref="aPointcut" method="printLog" />
</aop:aspect>
'Spring' 카테고리의 다른 글
@어노테이션을 이용한 AOP (1) | 2024.03.12 |
---|---|
Advice 동작시점 (0) | 2024.03.11 |
Spring 어노테이션을 이용한 연습 (0) | 2024.03.09 |
어노테이션으로 의존성 주입 (0) | 2024.03.07 |
.xml에 설정들이 많아진다면? (0) | 2024.03.06 |