재밌고 어려운 IT를 이해해보자~!

AOP(Aspect-Oriented Programming) 본문

코리아IT핀테크과정

AOP(Aspect-Oriented Programming)

언제나즐거운IT 2024. 2. 29. 12:03

AOP
C : 인증 로깅  C  트랜잭션 예외처리
R :  로깅   R
U : 인증 로깅 보안 U  트랜잭션 예외처리
D : 인증 로깅 보안 D  트랜잭션 예외처리

 

- Spring AOP는 스프링 프레임워크에서 제공하는 기능 중 하나로 관점 지향 프로그래밍을 지원하는 기술

관점 지향 프로그래밍에서는 소스코드에서 반복적으로 사용하는 코드를 하나로 묶어서 모듈화하여 재사용성과 유지 보수성을 높일 수 있는 강점을 가지고 있다. (아래 그림 참조)

 

해당 색은 클래스 A, B, C에서 동일하게 사용되는 코드



공통 로직
횡단 관심


비지니스 메서드(비지니스 로직, 핵심 관심, 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
Comments