Obtain real Class object for Spring bean










19















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)










share|improve this question
























  • Analogous question for Seam stackoverflow.com/questions/1979717/…

    – dart
    Feb 18 '10 at 15:00















19















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)










share|improve this question
























  • Analogous question for Seam stackoverflow.com/questions/1979717/…

    – dart
    Feb 18 '10 at 15:00













19












19








19


6






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)










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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

















  • 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












3 Answers
3






active

oldest

votes


















27














Spring's interface-based proxies implement TargetClassAware.






share|improve this answer

























  • 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


















17














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).






share|improve this answer
































    12














    Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)






    share|improve this answer






















      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
      );



      );













      draft saved

      draft discarded


















      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









      27














      Spring's interface-based proxies implement TargetClassAware.






      share|improve this answer

























      • 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















      27














      Spring's interface-based proxies implement TargetClassAware.






      share|improve this answer

























      • 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













      27












      27








      27







      Spring's interface-based proxies implement TargetClassAware.






      share|improve this answer















      Spring's interface-based proxies implement TargetClassAware.







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Feb 18 '10 at 19:52

























      answered Feb 18 '10 at 14:42









      axtavtaxtavt

      206k32446442




      206k32446442












      • 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
















      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













      17














      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).






      share|improve this answer





























        17














        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).






        share|improve this answer



























          17












          17








          17







          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).






          share|improve this answer















          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).







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Feb 18 '10 at 14:53

























          answered Feb 18 '10 at 14:41









          DaffDaff

          36.5k783103




          36.5k783103





















              12














              Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)






              share|improve this answer



























                12














                Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)






                share|improve this answer

























                  12












                  12








                  12







                  Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)






                  share|improve this answer













                  Or you can just call: AopUtils.html#getTargetClass(java.lang.Object)







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jul 23 '15 at 19:06









                  Korobko AlexKorobko Alex

                  457159




                  457159



























                      draft saved

                      draft discarded
















































                      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.




                      draft saved


                      draft discarded














                      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





















































                      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







                      Popular posts from this blog

                      𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                      How do I collapse sections of code in Visual Studio Code for Windows?

                      ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ