Set an AspectJ advise for static method

前端 未结 1 1584
温柔的废话
温柔的废话 2021-01-05 06:27

I have written simple Aspect with primitive Pointcut and Advise method:

@Aspect
public class MyAspect {

  @Pointcut(\"execution(static * com.mtag.util.SomeU         


        
相关标签:
1条回答
  • 2021-01-05 06:57

    Actually there is no solutions to intercept static methods using auto proxy in spring framework. You should use the LWT AspectJ solution.

    In a nutshell you should use the same annotations but with some additional configuration.

    1) add to the spring context file next line:

    <context:load-time-weaver/>
    

    (may be in your situation it is not necessary)

    2) unfortunately you should also add META-INF/aop.xml. Example:

    <weaver>
        <include within="com.example.ClassA"/> <!-- path to concrete class -->
        <include within="com.log.* "/> <!—- path to aspects package -->
    </weaver>
    <aspects>
        <aspect name="com.log.AspectA"/>
    </aspects>
    

    3) when starting JVM the argument

    -javaagent:${PATH_TO_LIB }/aspectjweaver.jar
    

    should be added.

    So this solution is rather laborious.

    For more information read 7.8.4 chapter here http://docs.spring.io/spring/docs/3.0.0.RC2/reference/html/ch07s08.html

    0 讨论(0)
提交回复
热议问题