본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> AOP> @Before advice type

Maven Repository: org.aspectj » aspectjweaver (mvnrepository.com)

AspectJ를 먼저 다운 받자.

SpringAOP가 AspectJ 기능을 사용하기 때문이다. 

 

lib 폴더에 jar 파일을 넣고 build path를 설정해준다.


앞으로 해야할 목록

1. 목표 객체를 생성한다.

2. Java Config class 를 만든다.

3. 메인 함수를 만든다.

4. @Before가 있는 Aspect 를 만든다. 

 

 

 

 

1. 목표 객체를 생성한다.

2. Java Config class 를 만든다.

Spring Pure Java configuration

Spring AOP Proxy Support

Component scan for components and aspects

 

3. 메인 함수를 만든다.

이제 남은 것은 메인 함수 작성

메인함수에서 해야할 일은 다음과 같다.

spring config java class 를 읽는다.

spring container로부터 bean을 읽는다.

비즈니스 메서드를 부른다.

context를 종료한다.

 

4. @Before가 있는 Aspect 를 만든다. 

 

 

큰 그림을 보자면 이렇다..

메인 앱에서 목표 객체를 실행해야한다.

여기서 중요한 것은 평소처럼 패키지를 import해서 사용하는 게 아니라

bean을 회수하는 방식으로 목표 객체를 접근하여 실행해야 한다.

목표 클래스 객체를 찾기 위해서 클래스 위에 @Component 를 적어

스캔이 가능하게 설정한다.

 

그 다음 Configuration 은 클래스 파일로 작성할 것이다.

클래스 위에 @Configuration 이라고 써서 명시하자.

이 안에 객체 패키지 위치를 적어야 한다. 왜냐하면 목표 객체를 찾아야 하니까.

메인 앱에서 객체 함수를 실행할 때 프록시 기능을 사용해야 하니

@EanbleAspectAutoProxy를 한다.

 

내용 점검하자면

메인앱이 config 파일을 통해 context 객체를 만들고

context 객체로 confing 내용을 참조하여 목표 객체를 가져온다.

목표 객체 함수를 실행한다.

config에서는 프록시를 실행하라고 적혀있으니

프록시에 해당하는 aspect를 실행해야 한다. 

@Aspect 적혀있는 클래스를 찾아서 실행한다.

@Aspect이자 @Component 안에는

@Before가 젹혀 있으므로 해당 목표 객체 실행 전에 

이 Aspect의 기능을 실행한다.