재밌고 어려운 IT를 이해해보자~!
AOP(Aspect-Oriented Programming) 본문
AOP
C : 인증 로깅 C 트랜잭션 예외처리
R : 로깅 R
U : 인증 로깅 보안 U 트랜잭션 예외처리
D : 인증 로깅 보안 D 트랜잭션 예외처리
- Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술
관점 지향 프로그래밍에서는 소스코드에서 반복적으로 사용하는 코드를 하나로 묶어서 모듈화하여 재사용성과 유지 보수성을 높일 수 있는 강점을 가지고 있다. (아래 그림 참조)
공통 로직
횡단 관심
비지니스 메서드(비지니스 로직, 핵심 관심, CRUD)에서 횡단 관심(공통 로직)을 분리
관심 분리 (Separation of Concern) : AOP의 시작
로직 ( 관심 ) 들끼리 코드를 관리 -> 높은 응집도를 보장
항상 찍는 로그는 공통 로직이네 ?!
Advice 클래스로 분리 == 관심 분리
Advice를 Service의 멤버변수로 설정 //멤버변수로설정하면의존관계가발생!! -> 의존주입진행
▶ 의존 관계
비지니스로직 수행 전에 호출
*꿀팁*
=================================
개발시 static은 무거워진다 -> 시작부터 끝까지 내내살아있음 static 사용시 의심을 해봐라
컴포넌트써도되고 bean써도된다 .,.? 편해서 ..?
같은 기능,같은 타입의 여러 객체중에서 1개를 선택하는 경우 -> <bean>
예를들어 Phone -> 컴포넌트사용 (확정사용)
aw vs gw -> 골라쓸시 bean사용
xml이바뀌는건 컴파일을 안해도된다. 서버를 그대로 사용가능
@Autowired 아래에 뭘 추가하는걸 선호를 하지 않는다.
Qulifier쓸바에 xml에서 객체생성 (bean으로) 아마... xml에 bean 사용시 component도 사용하지 않는 것 같다.
================================
AOP사용을 위해선 스키마는 설정이 되어있어야한다. (.xml)
※ 포인트컷
횡단 관심을 연결할 비지니스 메서드
횡단 관심을 연결할 대상 클래스(객체)
※ 에스팩트(aspect)
포인트컷(핵심로직)과 어드바이스(횡단관심)의 조합
포인트컷과 어드바이스의 결합(위빙,weave)
bean이 new 를하는데
이친구를 포인터와 조인해야함 (에스펙트처리)
aPointcut과 logAdvice를 조합할꺼야 when? 비지니스 메서드 전에 printLog메서드를 쓸꺼야
(* cohttp://m.spring.biz..*Impl.select*(..))" />
상위 xml 코드에서
- ..은 개수 무관
- 처음 * 은 return타입 상관없다.
- *-> 이름과 타입이 무관하다.
- *Impl -> ~~~~Impl 붙은것들
- .select* -> select~~~~ 모든것들
- (..) -> 메서드 인자 개수 무관
'코리아IT핀테크과정' 카테고리의 다른 글
Spring 프레임워크 구조 Update (버전별 정리) (0) | 2024.03.05 |
---|---|
Data Base Connection Pool (0) | 2024.03.04 |
xml, annotation(@) (4) | 2024.02.28 |
스프링 설치 (0) | 2024.02.27 |
Dependency Injection(의존 주입) (0) | 2024.02.27 |