1. 핵심기능을 구현하고
2. 공통기능을 구현한다.
3. 공통기능을 구현하는 방법에는 XML을 활용하는 방식과 어노테이션을 이용하는 방식이 있다
4. 본 페이지는 XML을 활용하여 공통기능을 구현해보고자 한다.
기본적인 개념
1. pom.xml 에서 dependency 추가하기
2. Class 2개 생성해서 메소드 만들기
1) Student Class 만들기 (변수선언)
2) Student Class 에 메인함수에서 호출될 핵심기능 생성해놓기 ( A기능 )
3) Worker Class 만들기(변수선언)
4) Worder Class에 메인함수에서 호출될 핵심기능 생성해놓기(B기능)
3. META-INF 안에 CTX 생성
1) applicationCTX1.xml 에 Student형 bean , Worker 형 bean 생성해주기
4. 메인함수 만들어서 xml의 bean 주입받아 함수 호출하기
ㅇ 컨테이너 만들고, Student와 Worker 빈 받아오고 , 각각의 클래스에 생성해준 함수 호출해주기
5. 공통 기능을 구현할 ProxyClass 만들기
공통기능의 종류 :
1)around Advice
2)befere Advice
3)after Advice
4)after-returningAdvice
ㅇ 핵심기능과 공통기능을 연결시켜줘야 main을 실행시켰을때 공통기능 함수가 호출이 될 수 있음 (이번단에는 안함)
ㅇ around 를 제외하고 나머지 함수는 어렵지 않음
-- return 타입도 따로 없음
ㅇ around 함수 ****
-- object 를 return 타입으로 하고, 메소드 쓰기
(object는 사실 안넣어도 되지만 핵심기능에 return 타입 있을 수 있으니 Object를 넣어주는 것 )
-- 얘는 중간에 반드시 갔다가 와야함 . 핵심기능 수행하고 와서 공통기능 수행하는 것이 아님 혹은 공통기능 수행하고 핵심기능 수행하는 것도 아님
-- 공통기능 수행하고 핵심기능 수행했다가 다시 돌아와서 공통기능 수행 다시 함 ( 그부분에 대해 써줘야함)
-- 따라서 핵심기능 뜻하는 아이를 매개변수에 넣어줘야해 그 핵심기능이 JoinPoint 임 (매개변수에 ProceedingJoinPoint 형으로 joinPoint 써줘야해)
-- around는 반드시 핵심기능 수행 전에 뭔가를 해야하고, 핵심기능 수행후에 또 뭔가를 해야함 즉 핵심기능 전후로 공통기능 수행
-- 핵심기능 메소드명 작성해주고, 시작시점을 currentTimeMillis로 뽑아주기
-- proceed는 joinPoint를 수행하라 라는 뜻, return 타입이 있을수도 있으니 object로 받는 것 , try - catch 해주기
-- 하지만 여기까지 실행해도 계속 오류가 안 없어짐 왜? try 절안에서 return 타입을 받아버리면 catch 절로 넘어갔을때 return 해줄게 사라짐 즉 catch 절로 떨어지면 object return 을 할 수가 없어 따라서 catch 를 없애고 finally 하기
-- finally 후 joinPoint.proceed에 생기는 오류는 throw로 던져버리기
** around는 핵심기능 수행 전 후에 뭔가를 해야함, 그럼 핵심기능 수행후에 하고 싶은 애들을 fianlly 만들고 그 뒤에다가 써주면 됨.
-- 끝나는 시간이 언젠지 궁금하니 System.currentTimeMilis()로 뿌려보기 -- 꼭 할 필요 없음 그냥 언제 끝나는지 궁금해서 해보는거임
6. Proxy Class 를 만들었으니 xml에 가서 어떤 함수를 어떻게 쓸건지 짝을 지어주는 과정이 필요함 xml로 가기
-- 만들어 놓은 xml 위에( 혹은 밑에) proxyClass 연결해주는 아이 써주기 :
1) proxy class 객체 만들기 (빈)
2) 함수 하나하나를 student에 있는 함수, worker에 있는 함수와 연결해주면 됨 - 연결해주는 아이가 aop
3) Namespaces 가서 aop 체크하기
4) <aop:config> 열어주고
5)<aop:aspect >가 공통기능을 의미 여기의 id를 aroundAspect(연결시킬이름) 주고 ref에는 proxyClass 써주기
6) pointcut : 싹 연결하는 아이
6-2)(expression :어디에 왔으면 좋겠는지 적는 부분 / id = 핵심기능이름 ) ./ within 은 ~에 포함된거 다 라는 뜻
7) aop:around 어떤 함수 연결시킬래? 라고 묻는 부분
7. 메인함수가서 실행해보기
이어서 학습하기
SPRING#9 공통기능구현하기 2(AOP) (tistory.com)
SPRING#9 공통기능구현하기 2(AOP)
ㅇ Weaving : Advice 와 target이 결합되어서 프록시 객체를 만드는 과정 ㅇ 방법은 XML을 이용하는 방법과 @Aspect 어노테이션 이용하는 방법이 있다. ㅇ XML 활용하는 방식을 SPRING#8 공통기능구현하기1 과
tjqud531531.tistory.com
'LANGUAGE > SPRING' 카테고리의 다른 글
SPRING#10 MVC 게시판 구조이해 (0) | 2022.07.14 |
---|---|
SPRING#9 공통기능구현하기 2(AOP) (0) | 2022.07.14 |
SPRING #7 외부파일을 이용한 설정 (2) | 2022.07.13 |
SPRING #6 빈의 생명주기 (0) | 2022.07.13 |
SPRING #5 DI 자동설정 (0) | 2022.07.13 |