更新时间:2023-02-09 14:49:37
使用Spring的 AbstractAutoProxyCreator子类化这样我就可以用Java代码表示切入点.
Proxying all beans in an application context that match certain criteria is easiest done with Spring's AutoProxy-Facility. Alas, the pointcut api is somewhat cumbersome to use in java based config; I usually subclass the AbstractAutoProxyCreator so I can express the pointcut in java code.
例如,我会做类似的事情:
For instance, I'd do something like:
@Bean
AbstractAutoProxyCreator autoProxyCreator() {
return new AbstractAutoProxyCreator() {
@Override
protected Object[] getAdvicesAndAdvisorsForBean(Class<?> beanClass, String beanName, TargetSource customTargetSource) {
if (BusinessService.class.isAssignableFrom(beanClass)) {
return new Object[] {loggingAdvice()};
} else {
return DO_NOT_PROXY;
}
}
};
}
@Bean
LoggingAdvice loggingAdvice() {
return new LoggingAdvice();
}
@Bean
public PersonService personService() {
return new PersonService();
}
此代码未经测试,因为我手头没有带有Spring(或Maven)的IDE,但是要旨应该可以.
This code is untested, as I don't have an IDE with Spring (or Maven) at hand, but the gist should work.