Search
Duplicate
📒

[Spring Study] 09-99. AOP 세부내용

상태
미진행
수업
Spring Study
주제
AOP
4 more properties
참고

내용

AOP(Aspect Oriented Programming)

NOTE
관점 지향 프로그래밍 ( Aspect Oriented Programming )
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미
핵심적인 관점 : 개발자가 적용하고자 하는 핵심 비즈니스 로직
부가적인 관점 : 핵심 로직을 수행하기 위해 필요한 DB연결(JDBC), 로깅, 파일 입출력 등
AOP는 프록시 패턴을 통해 구현된다
프록시(Proxy) : Target을 감싸서 요청을 대신 받아주는 Wrapping 오브젝트이다
Advice가 적용되었을 때 만들어짐
대표적으로 Spring AOPAspectJ가 존재한다.

AOP - Apsect(관점)

NOTE
하나의 회사가 있다고 가정하자, 회사에는 부서가 존재하고 각 부서에는 팀장과 팀원이 존재한다
일할 때 모든 직원이 필요하지는 않다
부서장 회의, 신규 사업회의 등 주제와 같은 인원들만 필요함
이와 같은 주제를 프로그래밍에서는 관점(Aspect)라고 부른다.

AOP - Container , Bean

NOTE
Container
관점에 따라 필요한 직원들이 존재하는 회사
Bean
회사에 다니는 직원들은 객체(Objct), Beans라고 한다

AOP - 적용 예시, 용어

NOTE
어느날 부터 개발팀 사람들의 지각이 많아졌고, 개발팀 전원은 출퇴근시 지문인증을하고 급여에 반영하기로 했다
야근하는 특정 인원들에게 택시비를 지급하는 경우
이렇게 적용된 추가 작업은 언제든지 해제할 수 있으며, 해제하면 원래대로 돌아간다.
AOP 용어
Aspect
Advice를 가진 클래스
Advice
간섭에 사용할 코드를 가진 메소드
Aspect무엇을 언제 할 지를 정의한다 (Before, After 등.. )
Target
Advice를 받을 대상 (핵심이 기능이 담긴 클래스)
Joinpoint
Advice를 적용할 수 있는 곳을 JoinPoint라고 한다
즉 애플리케이션 실행에 Aspect를 끼워 넣을 수 있는 지점을 말한다
메서드, 필드, 객체, 생성자 등등…
Pointcut
TargetJoinPoint를 특정하기 위한 식 (실제 Advice가 적용될 시점)
Aspect가 어디서 JoinPoint를 할 지를 말한다.
Weaving
Target객체에 Asepct를 실제로 적용하는 절차
AdviceTarget이 결합되어서 프록시 객체를 만드는 과정
[참고]
Pointcut 실제 적용
// pointCut 적용 식 @Before(value = "execution(* com.ssafy.board.model..Board*.*(..))") // execution(실행) *(접근 제한자, *이므로 모두에 적용) // [패키지 명] ..(앞의 패키지명을 포함한 모든 패키지를 선택한다) // Board*.*(Board~.~ 로 시작하는 파일(클래스)을 모두 찾는다) // (..) 파라미터도 제한이 없음
Java
복사

AOP - 시점에 따른 Advice 구분

NOTE
AOP 시점에 따른 코드