我正在使用ServiceFactoryBean和ServiceListFactoryBean收集一些SPI实现实例,并自动连接到我的服务bean。现在我已经创建了一些方面来拦截这些类来测量性能和日志调用。
我注意到spring正在为ServiceFactoryBean捕获并注入服务bean的实例创建代理。但是它没有为ServiceListFactoryBean捕获的实例列表创建任何代理。
如何告诉spring为这些bean创建代理以使我的方面有效?
以下是我的代码段 -
收集SPI实现并公开它们以进行自动装配的配置
@Bean
public ServiceFactoryBean faceImageStorageProvider() {
ServiceFactoryBean serviceFactoryBean = new ServiceFactoryBean();
serviceFactoryBean.setServiceType(FaceImageStorageProvider.class);
return serviceFactoryBean;
}
@Bean
public ServiceListFactoryBean notificationSenders() {
ServiceListFactoryBean serviceListFactoryBean = new ServiceListFactoryBean();
serviceListFactoryBean.setServiceType(NotificationSender.class);
return serviceListFactoryBean;
}
方面 (这个有效)
@Pointcut("execution(* com.xxx.spi.storage.FaceImageStorageProvider.*(..))")
private void anyFaceImageStorageProviderAPI() {}
(这个不起作用)
@Pointcut("execution(* com.xxx.spi.notification.NotificationSender.*(..))")
private void anyNotificationSenderAPI() {}
答案 0 :(得分:0)
仅供参考,我通过以下列方式以编程方式创建代理来解决问题 -
<name>.cpp