如何使切入点表达式建议bean的方法扩展在第三方库中定义的类?

时间:2016-07-21 07:08:01

标签: java spring aop spring-aop

我有一个像这样定义的Spring bean:

package org.behrang.sample;

import foo.AbstractThirdPartyClass;

@Component
public class SampleBean extends AbstractThirdPartyClass<Input, Output> {

    @Override
    public Optional<Output> process(Input input) {

    }

}

AbstractThirdPartyClass类在名为foo的第三方库中定义。

我想实现一个适用于所有方法的建议 org.behrang.sample包,所以我实现了类似的东西:

@Aspect
@Component
public class SampleAspect {

    @Before("execution(public * org.behrang.sample..*.*(..))")
    public void sampleBefore(JoinPoint joinPoint) {

    }
}

然而,这并不是建议SampleBean::process(Input)。如果我删除了extends AbstractThirdPartyClass<Input, Output> 部分,然后建议使用process方法。

有一种优雅的方法可以解决这个问题吗?例如,我可以使用以下一种方法在org.behrang.sample中定义一个接口:

public interface Sampler<I, O> {
    public Optional<O> process(I input);
}

让SampleBean也实现它。但这太丑陋和反干。

此外,我已使用@EnableAspectJAutoProxy(proxyTargetClass = true)启用了AOP,因为此项目中定义的manu bean未实现任何接口。

0 个答案:

没有答案