You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>위처럼 @Pointcut을 이용해 재사용 가능한 포인트컷을 등록, 사용할 수도 있고 관계연산자를 이용해 여러 포인트컷을 적용할수도 있다.
90
-
>
91
-
>### Aspect
92
-
>
93
-
>부가기능 모듈, 객체지향의 객체처럼 AOP의 한 기능을 가지는 모듈 스프링에서는 @Aspect 어노테이션을 통해 구현할 수 있다.
94
-
>
95
-
>### JoinPoint
96
-
>
97
-
>메소드 실행이나 예외 처리, 필드값 수정 등에 대한 지점을 나타낸다.SpringAOP에서는 메소드 실행에 대한 JoinPoint만 지원한다.
98
-
>
99
-
>### Weaving
100
-
>
101
-
>Aspect가 지정된 객체를 새로운 프록시 객체를 생성하는 과정.
102
-
>
103
-
>
104
-
>
105
-
>위처럼 CategoryService라는 객체 이외에 CGLIB 프록시 객체가 생성되기 위한 과정을 의미한다.
106
-
>
107
-
>Compile-time Weaving, Load-time weaving, Run-time weaving 세가지 방식의 Weaving이 존재하고. 스프링 AOP에서는 CGLIBProxy, JDKDynamicProxy를 이용한 Run-time weaving 방식을 제공한다.
108
-
>
109
-
>### Proxy
110
-
>
111
-
>타겟을 감싸서 요청을 대신 받아주는 랩핑 클래스.Weaving을 통해서 Proxy 객체를 생성하며 SpringAOPProxy는 CGLIBProxy, JDKDynamicProxy를 사용한다. 스프링의 AOP는 이 프록시 객체를 통해 작동하게 된다.
41
+
### Target Object
42
+
43
+
부가기능을 부여할 대상, ex) CategoryService 등.. 대개 스프링에서는 Service 쪽이 해당.
44
+
45
+
스프링에서는 Runtime Weaving을 통해 프록시 된 객체들이 대상 객체에 해당한다.
위처럼 @Pointcut을 이용해 재사용 가능한 포인트컷을 등록, 사용할 수도 있고 관계연산자를 이용해 여러 포인트컷을 적용할수도 있다.
90
+
91
+
### Aspect
92
+
93
+
부가기능 모듈, 객체지향의 객체처럼 AOP의 한 기능을 가지는 모듈 스프링에서는 @Aspect 어노테이션을 통해 구현할 수 있다.
94
+
95
+
### JoinPoint
96
+
97
+
메소드 실행이나 예외 처리, 필드값 수정 등에 대한 지점을 나타낸다.SpringAOP에서는 메소드 실행에 대한 JoinPoint만 지원한다.
98
+
99
+
### Weaving
100
+
101
+
Aspect가 지정된 객체를 새로운 프록시 객체를 생성하는 과정.
102
+
103
+

104
+
105
+
위처럼 CategoryService라는 객체 이외에 CGLIB 프록시 객체가 생성되기 위한 과정을 의미한다.
106
+
107
+
Compile-time Weaving, Load-time weaving, Run-time weaving 세가지 방식의 Weaving이 존재하고. 스프링 AOP에서는 CGLIBProxy, JDKDynamicProxy를 이용한 Run-time weaving 방식을 제공한다.
108
+
109
+
### Proxy
110
+
111
+
타겟을 감싸서 요청을 대신 받아주는 랩핑 클래스.Weaving을 통해서 Proxy 객체를 생성하며 SpringAOPProxy는 CGLIBProxy, JDKDynamicProxy를 사용한다. 스프링의 AOP는 이 프록시 객체를 통해 작동하게 된다.
112
112
113
113
## SpringProxy
114
114
@@ -186,25 +186,25 @@ Weaving이란 지정된 객체에 Aspect를 부여해서 새로운 프록시 객
186
186
187
187
아래와 같은 3가지 방법의 Weaving을 제공한다.SpringAOP는 기본적으로 무조건 Run-time weaving으로 동작한다.
188
188
189
-
>### Run-time weaving
190
-
>
191
-
>SpringAOP에서 사용하는 weaving 방식.**스프링에서는 Run-time weaving을 통해 CGLIBProxy 혹은 JDKDynamicProxy를 생성**한다.
192
-
>
193
-
>### Load-time weaving
194
-
>
195
-
>일반적으로 사용되는 SpringAOP가 아닌 AspectJ 라이브러리를 추가하여 사용해야 한다.
196
-
>
197
-
>객체를 Load 할때, AspectJ에 의해서 weaving된 객체를 넘겨주는 방식.
198
-
>
199
-
>applicationContext에 로드된 객체들을 불러온 뒤, Aspectj weaver에 의해 객체들을 weaving한다고 함. 객체들을 다 불러온 뒤 weaving을 하기 때문에 약간의 퍼포먼스 하락이 있다고 한다.
200
-
>
201
-
>### Compile-time weaving
202
-
>
203
-
>일반적으로 사용되는 SpringAOP가 아닌 AspectJ 라이브러리를 추가하여 사용해야 한다.
204
-
>
205
-
>Compile 시에 Aspectj에서 필요한 객체 weaving을 통해 클래스를 생성하는 방식이다. 위의 Load-time에 대한 절차가 없어서 퍼포먼스 하락 없이 구성이 가능하다.
206
-
>
207
-
>다만 Lombok과 같이 compile시 간섭하는 plugin들과 충돌이 발생한다고 함. 자바 8 기반 코드들에서 Lombok을 사용하지 않는 경우는 거의 없다고 봐도 되기 때문에 사실상 사용이 힘들듯?
189
+
### Run-time weaving
190
+
191
+
SpringAOP에서 사용하는 weaving 방식.**스프링에서는 Run-time weaving을 통해 CGLIBProxy 혹은 JDKDynamicProxy를 생성**한다.
192
+
193
+
### Load-time weaving
194
+
195
+
일반적으로 사용되는 SpringAOP가 아닌 AspectJ 라이브러리를 추가하여 사용해야 한다.
196
+
197
+
객체를 Load 할때, AspectJ에 의해서 weaving된 객체를 넘겨주는 방식.
198
+
199
+
applicationContext에 로드된 객체들을 불러온 뒤, Aspectj weaver에 의해 객체들을 weaving한다고 함. 객체들을 다 불러온 뒤 weaving을 하기 때문에 약간의 퍼포먼스 하락이 있다고 한다.
200
+
201
+
### Compile-time weaving
202
+
203
+
일반적으로 사용되는 SpringAOP가 아닌 AspectJ 라이브러리를 추가하여 사용해야 한다.
204
+
205
+
Compile 시에 Aspectj에서 필요한 객체 weaving을 통해 클래스를 생성하는 방식이다. 위의 Load-time에 대한 절차가 없어서 퍼포먼스 하락 없이 구성이 가능하다.
206
+
207
+
다만 Lombok과 같이 compile시 간섭하는 plugin들과 충돌이 발생한다고 함. 자바 8 기반 코드들에서 Lombok을 사용하지 않는 경우는 거의 없다고 봐도 되기 때문에 사실상 사용이 힘들듯?
0 commit comments