Java SpringAOP-我想将切入点应用于库中的类

Java SpringAOP-我想将切入点应用于库中的类,java,spring,aop,Java,Spring,Aop,我试图使用SpringAOP将日志添加到来自第三方库的方法中。所以有一个类ProxyServlet,我的Spring引导应用程序正在使用它,我只想对它应用日志记录 @Pointcut("within(com.common.httpproxy.ProxyServlet)") private void proxyServlet() {} @Before("proxyServlet()") public void testLog() {

我试图使用SpringAOP将日志添加到来自第三方库的方法中。所以有一个类ProxyServlet,我的Spring引导应用程序正在使用它,我只想对它应用日志记录

@Pointcut("within(com.common.httpproxy.ProxyServlet)")
    private void proxyServlet() {}

    @Before("proxyServlet()")
    public void testLog() {
        log.info("THIS IS WORKING");
    }
这只是一些测试AOP代码。我知道我的SpringAOP已经设置好了,因为我可以获得代码库中包含的任何类的日志输出。但是,我无法从第三方库(如ProxyServlet)获取任何类的日志输出


我能做些什么来让这个AOP建议发挥作用吗?

您应该用以下内容对包含此代码的类进行注释:

@Aspect
@Component

假设ProxyServer实例是一个bean,您可以通过为日志定义一个方面来实现它,如下所示

@Aspect
public class LoggingAspect {    
        @Before(execution(* the.package.ProxyServlet.*(..)))
        public void loggingAdvice(JoinPoint joinPoint){
            System.out.println("Started loggingAdvice on method="+joinPoint.toString());
            System.out.println("The aruguments are =" + Arrays.toString(joinPoint.getArgs()));
        }

    } 
请注意,这里不需要像@LoggingAdvice这样的自定义切点,也不需要使用它来注释目标方法(我之所以指向它,是因为您提到该类位于第三方库中,这意味着您担心您可能无法使用切点注释meothod)。自定义切入点在定义广泛适用的方面并将其应用限制到某些关节品脱(通过自定义切入点)时非常有用 由于您的目标是单个类,并且是第三方库,因此您不需要自定义切入点,但有一个方面专门针对所需的类,这是很好的。
上面的define方面将对ProxyBean类中定义的每个方法执行

外部库类是Springbeans吗?