Uploaded image for project: 'Spring Framework'
  1. Spring Framework
  2. SPR-17236

AnnotationTransactionAspect weaves to all public methods in CGLIB proxy include toString, hashCode etc.

    XMLWordPrintable

    Details

      Description

      When setting up the LTW and my own transactional aspect, I came across the strange behavior of AnnotationTransactionAspect. 

      The test project is available on the github. Consists of SpringBootApplication, Service and Repository. On Service and Repository using annotations Transactional. Application settings consist of:

      @SpringBootApplication
      @EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.AUTODETECT)
      @EnableTransactionManagement(mode = AdviceMode.ASPECTJ)
      

      And in aop.xml:

      <weaver options="-showWeaveInfo">
      1. When you start with VM options:
        -javaagent:src/lib/spring-instrument-5.0.8.RELEASE.jar

        CGLIB proxy for Repository is created and AnnotationTransactionAspect weaves to all CGLIB proxy public methods, include toString, hashCode etc. And AnnotationTransactionAspect doesn't weave to MyServiceMethod

      2. When you start with VM options:
        -javaagent:src/lib/aspectjweaver-1.9.1.jar

        It won't run because need to specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent.

      3. When you start with both VM options:
        -javaagent:src/lib/spring-instrument-5.0.8.RELEASE.jar 
        -javaagent:src/lib/aspectjweaver-1.9.1.jar

        AnnotationTransactionAspect weaves to MyServiceMethod, MyRepositoryMethod (like expected) and to all MyRepository CGLIB proxy methods (include second weaves to MyRepositoryMethod).

      It seems like bad behavior AnnotationTransactionAspect or poor documentation for LTW and agents: spring-instrument, aspectjweaver.

       

        Attachments

          Activity

            People

            Assignee:
            juergen.hoeller Juergen Hoeller
            Reporter:
            tatatatitatata Plyushchev Anton
            Last updater:
            Spring Issues Spring Issues
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Days since last comment:
              3 years, 23 weeks, 5 days ago