728x90
스프링은 크게 IOC AOP PSA, 이 3가지 개념을 제공해주는 스프링 트라이앵글이라는 개념이 있다.
AOP 는 aspect oriant program
ex)
class A{
method a () {
AAAA
오늘은 7월4일 미국 독립 기념일
BBBB
}
class B{
method b () {
AAAA
오늘은 아침운동
BBBB
}
이렇게 똑같은 코든데 흩어진거의 문제는 뭔가 바꿔야할 때 다 찾아가서 바꿔야한다.
공통적인 코드를 모아놓자!
class AAAABBB{
method aaaabbb(JoinPoint point){
AAAA
point.execute()
BBB
}
}
이런게 AOP
petclinic에서는 @Transactional(readOnly = true), 이게 스프링AOP 기반으로 만들어진 어노테이션.
코드가 없는데도 코드가 있는 것처럼 코딩을 할 수 있게 해줌.
AOP 구현방법 3가지
1) 컴파일
A.java 를 컴파일하면 -> (AOP) -> A.class 생성되는데, 이 중간에 AOP를 넣는다.
자바 코드에는 stopwatch가 없지만 컴파일 한 코드에는 stopwatch코드가 들어간 것 처럼 컴파일을 해주는 독특한 컴파일러가 있다 (aspectJ)
2)바이트코드 조작
A.java - > A.class 만들고 A.class 사용할 때, 이 런타임에서 A라는 클래스를 클래스로더가 이 클래스를 읽어서 메모리에 올릴 때 조작함.
A.java - > A.class ---(AOP)---메모리(AspectJ)
3) 프록시 패턴 (스프링 AOP가 사용)
728x90
'Programming > Java' 카테고리의 다른 글
[Spring Framework] IOC Container (0) | 2020.12.06 |
---|---|
[Spring Framework] AutoWired (0) | 2020.12.06 |
[Spring Framework] 스프링 소개 (0) | 2020.12.02 |
[petclinic] PSA (0) | 2020.11.28 |
[petclinic] maven surfire 오류 해결 방법 (0) | 2020.11.22 |
댓글