Obtain real Class object for Spring bean
up vote
18
down vote
favorite
I am using Spring to inject beans. And I am using some annotations to annotate bean methods (Security, TransactionManagement, ExceptionHanling, Logging). The problem is:
I want to create JUnit test to check if I forgot annotate some methods. But Spring returns $ProxyXXX class without any annotations on methods..
Method methods = logic.getClass().getMethods();
for (Method method : methods) {
Annotation annotations = method.getAnnotations(); // empty array!
How can I get annotations for method or obtain a real class object?
P.S. Spring 2.5.6, JDKDynamicProxy (not CGLib)
java spring spring-aop
add a comment |
up vote
18
down vote
favorite
I am using Spring to inject beans. And I am using some annotations to annotate bean methods (Security, TransactionManagement, ExceptionHanling, Logging). The problem is:
I want to create JUnit test to check if I forgot annotate some methods. But Spring returns $ProxyXXX class without any annotations on methods..
Method methods = logic.getClass().getMethods();
for (Method method : methods) {
Annotation annotations = method.getAnnotations(); // empty array!
How can I get annotations for method or obtain a real class object?
P.S. Spring 2.5.6, JDKDynamicProxy (not CGLib)
java spring spring-aop
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00
add a comment |
up vote
18
down vote
favorite
up vote
18
down vote
favorite
I am using Spring to inject beans. And I am using some annotations to annotate bean methods (Security, TransactionManagement, ExceptionHanling, Logging). The problem is:
I want to create JUnit test to check if I forgot annotate some methods. But Spring returns $ProxyXXX class without any annotations on methods..
Method methods = logic.getClass().getMethods();
for (Method method : methods) {
Annotation annotations = method.getAnnotations(); // empty array!
How can I get annotations for method or obtain a real class object?
P.S. Spring 2.5.6, JDKDynamicProxy (not CGLib)
java spring spring-aop
I am using Spring to inject beans. And I am using some annotations to annotate bean methods (Security, TransactionManagement, ExceptionHanling, Logging). The problem is:
I want to create JUnit test to check if I forgot annotate some methods. But Spring returns $ProxyXXX class without any annotations on methods..
Method methods = logic.getClass().getMethods();
for (Method method : methods) {
Annotation annotations = method.getAnnotations(); // empty array!
How can I get annotations for method or obtain a real class object?
P.S. Spring 2.5.6, JDKDynamicProxy (not CGLib)
java spring spring-aop
java spring spring-aop
edited Feb 18 '10 at 19:56
skaffman
336k85729720
336k85729720
asked Feb 18 '10 at 14:20
dart
72031124
72031124
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00
add a comment |
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00
add a comment |
3 Answers
3
active
oldest
votes
up vote
26
down vote
accepted
Spring's interface-based proxies implement TargetClassAware
.
Nice! Sorry for outdated comment, I usedAopUtils.getTargetClass(Object)
from "see also" section in the provided link.
– iozee
Sep 29 '16 at 9:45
add a comment |
up vote
17
down vote
You can cast the proxied object to get the object and class it acts as a proxy for (see TargetSource):
Advised advised = (Advised) proxy;
Class<?> cls = advised.getTargetSource().getTargetClass();
Generally you should follow the Spring principles and keep obtaining the correct class as unobtrusive as possible. Meaning that as little classes as possible should depend on the Spring Framework APIs (maybe add a ClassLocator and a SpringProxyClassLocator implementation).
add a comment |
up vote
12
down vote
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
26
down vote
accepted
Spring's interface-based proxies implement TargetClassAware
.
Nice! Sorry for outdated comment, I usedAopUtils.getTargetClass(Object)
from "see also" section in the provided link.
– iozee
Sep 29 '16 at 9:45
add a comment |
up vote
26
down vote
accepted
Spring's interface-based proxies implement TargetClassAware
.
Nice! Sorry for outdated comment, I usedAopUtils.getTargetClass(Object)
from "see also" section in the provided link.
– iozee
Sep 29 '16 at 9:45
add a comment |
up vote
26
down vote
accepted
up vote
26
down vote
accepted
Spring's interface-based proxies implement TargetClassAware
.
Spring's interface-based proxies implement TargetClassAware
.
edited Feb 18 '10 at 19:52
answered Feb 18 '10 at 14:42
axtavt
203k32434435
203k32434435
Nice! Sorry for outdated comment, I usedAopUtils.getTargetClass(Object)
from "see also" section in the provided link.
– iozee
Sep 29 '16 at 9:45
add a comment |
Nice! Sorry for outdated comment, I usedAopUtils.getTargetClass(Object)
from "see also" section in the provided link.
– iozee
Sep 29 '16 at 9:45
Nice! Sorry for outdated comment, I used
AopUtils.getTargetClass(Object)
from "see also" section in the provided link.– iozee
Sep 29 '16 at 9:45
Nice! Sorry for outdated comment, I used
AopUtils.getTargetClass(Object)
from "see also" section in the provided link.– iozee
Sep 29 '16 at 9:45
add a comment |
up vote
17
down vote
You can cast the proxied object to get the object and class it acts as a proxy for (see TargetSource):
Advised advised = (Advised) proxy;
Class<?> cls = advised.getTargetSource().getTargetClass();
Generally you should follow the Spring principles and keep obtaining the correct class as unobtrusive as possible. Meaning that as little classes as possible should depend on the Spring Framework APIs (maybe add a ClassLocator and a SpringProxyClassLocator implementation).
add a comment |
up vote
17
down vote
You can cast the proxied object to get the object and class it acts as a proxy for (see TargetSource):
Advised advised = (Advised) proxy;
Class<?> cls = advised.getTargetSource().getTargetClass();
Generally you should follow the Spring principles and keep obtaining the correct class as unobtrusive as possible. Meaning that as little classes as possible should depend on the Spring Framework APIs (maybe add a ClassLocator and a SpringProxyClassLocator implementation).
add a comment |
up vote
17
down vote
up vote
17
down vote
You can cast the proxied object to get the object and class it acts as a proxy for (see TargetSource):
Advised advised = (Advised) proxy;
Class<?> cls = advised.getTargetSource().getTargetClass();
Generally you should follow the Spring principles and keep obtaining the correct class as unobtrusive as possible. Meaning that as little classes as possible should depend on the Spring Framework APIs (maybe add a ClassLocator and a SpringProxyClassLocator implementation).
You can cast the proxied object to get the object and class it acts as a proxy for (see TargetSource):
Advised advised = (Advised) proxy;
Class<?> cls = advised.getTargetSource().getTargetClass();
Generally you should follow the Spring principles and keep obtaining the correct class as unobtrusive as possible. Meaning that as little classes as possible should depend on the Spring Framework APIs (maybe add a ClassLocator and a SpringProxyClassLocator implementation).
edited Feb 18 '10 at 14:53
answered Feb 18 '10 at 14:41
Daff
35.8k783102
35.8k783102
add a comment |
add a comment |
up vote
12
down vote
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
up vote
12
down vote
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
up vote
12
down vote
up vote
12
down vote
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
answered Jul 23 '15 at 19:06
Korobko Alex
457159
457159
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f2289211%2fobtain-real-class-object-for-spring-bean%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Analogous question for Seam stackoverflow.com/questions/1979717/…
– dart
Feb 18 '10 at 15:00