LANGUAGE/SPRING

SPRING#9 공통기능구현하기 2(AOP)

옐옐루 2022. 7. 14. 10:56

ㅇ Weaving : Advice 와 target이 결합되어서 프록시 객체를 만드는 과정

ㅇ 방법은 XML을 이용하는 방법과 @Aspect 어노테이션 이용하는 방법이 있다. 

ㅇ XML 활용하는 방식을 SPRING#8 공통기능구현하기1 과 함께 이어서 보자 

ㅇ 오늘 해볼 것은 @Aspect 어노테이션을 이용하는 방법 


공통기능 구현하기 1을 보지 않은 사람들은  먼저 본 후에 2학습하기

SPRING #8 공통기능구현하기 1(AOP) (tistory.com)

 

SPRING #8 공통기능구현하기 1(AOP)

1. 핵심기능을 구현하고 2. 공통기능을 구현한다. 기본적인 개념 1. pom.xml 에서 dependency 추가하기 2. Class 2개 생성해서 메소드 만들기 1) Student Class 만들기 (변수선언) 2) Student Class 에 메인함수에..

tjqud531531.tistory.com


XML 이어서 

 

1. beforeAspect 불러오기 (expression에 함수 써보기)

ㅇ within 문법을 쓰면 클래스를 써야함

ㅇ execution 문법을 쓰면 함수를 써야함 

 --void com.lec.ch05.ex1.Worker.get* (ex1의 Woreker 밑의 get으로 시작하는 함수만 모두 가져와라)

-- 함수 단에 void 혹은 * 쓰면 됨 

ㅇ TestMain 실행시 Worder 객체 전 beforeAdvice 수행되는것 확인 

실행화면

 

2. afterAspect (expression에 빈넣어보기)

ㅇ stud로 시작하는 모든것 

ㅇ bean 안에 빈 생성시 만들어놨던 빈 이름 쓰기 

bean사용

 

실행화면

3. 나머지 애들도 해보기

소스
실행화면



최종정리

 

ㅇaround, before , after, after-returning에 대한 개념을 확실히 잡고 어떤식으로 수행되는지 아래 실행화면과 위의 소스코드를 비교하여 그 순서에 대해 명확하게 파악해보자

 

 

 

ㅇ 또한 within 과 excution , bean 사용하는 방식에 대해 명확하게 알고 설명할 수 있어야 한다.. 

( 구현되는 형태는 동일하지만 사용하는 방식만 다를 뿐 가장 많이 활용되는 것이 within 방식이다. )



@Aspect 어노테이션

 

1. 각각의 클래스 생성해주기 

2. applicationCTX2 에 가서 프록시 클래스에 대한 어노테이션을 읽어낼 aop 써주고, bean 생성해주기 

ㅇ 프록시 클래스를 어노테이션으로 지정하겠다 

ㅇ Namespaces에 가서 aop 눌러주고 아래처럼 생성해주기 

ㅇ proxyclass2 이름을 가진 빈 객체 만들기 

 

 

 

3.  ProxcyClass2로 가서   클래스와 메소드 마다 어노테이션 달아놓기 (함수는 이미 구현되어 있어야함)

1) 이 아이는 proxcyclass야 라는 걸 지정할 어노테이션 @Aspect 써주기 (클래스위에)

2) 함수에 어노테이션으로 지정하는 방법은 크게 2가지 

 --1. 함수 위에 Pointcut 쓰고 괄호안에 within(com.lec.ch05.ex2.*) 이런거 써주고 메소드 이름 써주기 

 --2. 밑에 Around 어노테이션 써주고 위에 pointcut 이후 썼던 메소드명 괄호안에 넣어주기 

Aspect , PointCut, Around
실행화면

 

3) 위의 어노테이션 방법을 한줄에 쓰는 방법도 있음 

4) 나머지 애들도 다 어노테이션 달아주기 

 

 

반응형