Spring FrameWork의 핵심기능중 하나인 AOP에 대해서 공부해보자.
일반적으로 코드의 중복사용을 줄이기 위하여 그리고 유지보수를 쉽게하기 위하여 함수,또는 클래스를 이용하였다. 하지만 코드 중간에 적용이 되는 코드들에 관해서는 함수로 나타내기 힘든 순간이 있다. 다음은 클래스가 가지고 있는 모든함수의 실행시간을 파악하기 위한 예제코드이다.
public void func1(){
StopWatch stopwatch=new StopWatch();
stopWatch.start();
//excute func1()
//~~~~~~~~
stopWatch.stop();
System.out.println(stopWatch.prettyPrint());//실행 시간 계산 및 출력
}
public void func2(){
StopWatch stopwatch=new StopWatch();
stopWatch.start();
//excute func2()
//~~~~~~~~
stopWatch.stop();
System.out.println(stopWatch.prettyPrint()); // 실행 시간 계산 및 출력실행 시간 계산 및 출력
}
.
.
.
함수의 실행시간에 대한 측정을 하기위해서 동일한 기능을 하는 코드들에 관하여 코드 앞과 뒤에 모든 함수들에 적용시켜야 된다. 혹여나 동일하게 코드를 변경하게 되야하는 상황이 생긴다면 시간이 많이 소요된다. 이러한 상황을 해결하기 위해 공통 기능코드에 대해 따로 관리할 필요가 있다.
AOP는 이를 가능하게 해준다.!
그럼 AOP를 구현하는 방법에는 어떤것들이 있을까?
1.컴파일과정에서 AspectJ이용
2.컴파일후 메모리로 적재되기전 AspectJ이용
3.프록시패턴(Spring AOP를 이용) 런타임시..
우리는 이중에서도 Spring의 핵심기술인 프록시패턴에 대해 다음장에서 공부해보자.