且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何为ProxyFactoryBean设置许多目标?

更新时间: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.