공통 로직 == 횡단 관심

ex) 인증, 로깅, 트랜잭션, 예외처리

비즈니스 메서드 == 비즈니스 로직 == 핵심 관심 == CRUD에서 횡단 관심을 분리

관심 분리 (Separation of Concern) => AOP의 시작

로직끼리 코드를 관리하기 때문에 높은 응집도를 보장

 

공통 로직을 Advice라고 부름

 

1. 항상 찍는 로그는 공통로직

2. Advice 클래스로 분리 == 관심 분리

3. Advice를 Service의 멤버변수로 설정 -> 의존 관계 발생

4. 비즈니스 로직 수행 전에 호출

 

같은 기능, 같은 타입의 여러 객체 중에서 1개를 선택하는 경우 -> Complie을 다시 하지 않아도 되기 때문에 <bean> 방식이 유리

정해진 경우 -> @Component가 유리

 

<aop:config>

조인포인트

- 어플리케이션에 존재하는 모든 비즈니스 메서드

포인트컷

- 횡단 관심을 연결할 비즈니스 메서드

애스팩트(aspect)

- 포인트컷(핵심 로직)과 어드바이스(횡단 관심)의 조합

- 포인트컷과 어드바이스의 결합(위빙)

<aop:config>
	<aop:pointcut id="aPointcut" expression="execution(* com.spring.biz..*Impl.*(..))" />
	<aop:pointcut id="bPointcut" expression="execution(* com.spring.biz..*Impl.select*(..))" />

	<aop:aspect ref="logAdvice">
		<aop:before pointcut-ref="aPointcut" method="printLog" />
	</aop:aspect>
</aop:config>

 

Advice 동작 시점 종류

Aspect 설정할 때 함께 설정함

- before: 비즈니스 메서드 수행 전

- after: finally, 비즈니스 메서드 수행 후

- after-returning: 비즈니스 메서드 return 반환 후

- after-throwing: catch, 비즈니스 메서드 예외발생시

- around: 비즈니스 메서드 수행 전후로 접근가능, 핵심로직의 성능평가, 실 서비스에는 잘 없음

 

aop 설정 어노테이션으로 하기

<aop:aspectj-autoproxy>

 

바인드 변수

바인딩이란?

메서드를 호출했을 때, 현재 메모리에 존재하는 객체를 실제로 수행하는 것

다형성(상속)을 구현한 상황에서 사용 가능

 

 

'-- 기타 -- > IT KOREA 국비 지원 강의' 카테고리의 다른 글

QnA  (0) 2024.03.06
[Spring] 자체 프레임워크로 이관  (0) 2024.03.05
스프링 프레임워크  (1) 2024.02.28
DI(Dependency Injection) 의존성 주입이란?  (0) 2024.02.27
Spring 정리  (0) 2024.02.26

+ Recent posts