我有一个像这样定义的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未实现任何接口。