Spring AOP(Aspect 라이브러리 pom.xml추가)

ifuleave·2022년 10월 11일
0

Spring Aop는 관점지향 프로그래밍
Service,Dao에서 중복되는 공통 코드 부분
(commit,rollback.logging)을 별도의 영역으로 분리해내고,
코드가 실행되기 전이나 이후 시점에 해당 코드를 붙여넣음으로써
소스코드의 중복을 줄이고, 필요할때마다 가져다 쓸 수 있게
객체화 하는기술

로그인 서비스 할때
컨트롤러, service, dao,mapper어떻게 만들고 했었는데
관점을 꺾어서
로그인이나 검색이나 게시판에서 공통적으로 해야할것을 뽑아내서
하나의 class로 개발해서
각각에다가 적용하는 방법

MemberService를 보면
1.로그인
2.회원가입
3,수정
4.회원검색
5.회원탈퇴

1,4번은 select commit,rollback이 필요X
2,3,5는 commit, rollback이 필요

spirng AOP용어

JoinPoint

클라이언트가 호출하는 모든 비즈니스 메소드
일반적으로 service의 모든 클래스
service에 있는애들한테 거으 ㅣ걸어주는데 aop를 걸어주는 후보구나

1.로그인
2.회원가입
3,수정
4.회원검색
5.회원탈퇴
를 joinpoint라고 한다. 후보군

pointcut

필터링 된 조인 포인트
joinpoint 중 공통기능을 적용할 선택된 메소드
후보군중에 선택된 것을 pointcut이라고함

2.회원ㅇ가입
3수업
5.회원탈퇴

후보군 중에 공통기능을 적용할 선택된메소드가 pointcut

Advice

pointcut에 적용할 공통 기능의 코드
:commit/rollback이라는 기능

Aspect or Advisor

pointcut+advice=aspect
어떤 pointcut에 어떤 Advice를 적용할지 결정
Advisor는 Aspect와 같지만 몇몇 특수한 경우에 사용

pointcut에 advice를 연결할게~ 하는데 Aspect!라고 한다.


1.공통으로 처리할 기능 (advice)
2. joinpoint(서비스 클래스의 모든 메소드) 중 공통으로 처리할 기능이 적용될 메소드를 선택
->메소드 선정작업
->2번에 의해서 선정된 메소드를 pointcut이라고 함
3.point-cut에 advice를 적용 (aspect)
-> 적용 시점이 총 5개

joinpoint에서 pointcut을 어떻ㄷ게 선정할것인지!

SpringAop-pointcut표현식

패키지 ->
org.kh.test..
org.kh.test. 차이가 있음

.. ->메소드 신경안쓸게,갯수.type 상관없음
(별) 모든이라는 의미
->type은 상관없는데 무조건 1개는 있어야함
vo.package 모든경로는 적어줘야한다.
!는 부정의 의미를 가져간다.
integer,..->1째는 정수, 2번쨰는 제약없음(있어도되고 없어도됨)
integer,(
별) ->1번쨰는 정수,2번쨰는 아무타입이나


메소드 언제 동작하게 할것인지 시점 5개
before : 메소드 동작전
after Returning : 성공적으로 리턴 되면 동장 /try
after throwing : 실행중 예외가 발생하면 /cathch
after : 실행된 후 무조건 동장(에러,성공 상관없음) /finally
around : 전후의개념x 전후처리할 수 있는 필터처럼 특정메소드가 있는데
전에 작성하면 이전, 후에 작성하면 이후

라이브러리추가

profile
꼬마개발자

0개의 댓글