Spring没有为ServiceListFactoryBean对象创建代理

时间:2017-03-11 01:02:12

标签: spring aspect serviceloader

我正在使用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() {}

1 个答案:

答案 0 :(得分:0)

仅供参考,我通过以下列方式以编程方式创建代理来解决问题 -

<name>.cpp