공통 로직 == 횡단 관심
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 |