Obtain real Class object for Spring bean
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 |
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 |
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
343k85738723
343k85738723
asked Feb 18 '10 at 14:20
dartdart
74531124
74531124
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
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 |
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 |
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 |
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 |
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
axtavtaxtavt
206k32446442
206k32446442
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 |
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 |
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 |
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
DaffDaff
36.5k783103
36.5k783103
add a comment |
add a comment |
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)
add a comment |
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 AlexKorobko Alex
457159
457159
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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