Je collecte des instances d'implémentation SPI en utilisant ServiceFactoryBean et ServiceListFactoryBean et le câblage automatique à mes beans de service. J'ai maintenant créé certains aspects pour intercepter ces classes afin de mesurer les performances et les invocations de journaux. Je remarque que spring crée un proxy pour les instances capturées par ServiceFactoryBean et injectées dans les beans de service. Mais il ne crée aucun proxy pour la liste des instances capturées par ServiceListFactoryBean.Ressort ne créant pas de proxy pour les objets ServiceListFactoryBean
Comment puis-je dire au printemps de créer proxy pour ces haricots à ce que mes aspects fonctionnent?
Ce qui suit est mon extrait de code -
Configuration qui rassemble les implémentations SPI et les expose pour Autowiring
@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;
}
Aspects (Celui-ci fonctionne)
@Pointcut("execution(* com.xxx.spi.storage.FaceImageStorageProvider.*(..))")
private void anyFaceImageStorageProviderAPI() {}
(Celui-ci ne fonctionne pas
@Pointcut("execution(* com.xxx.spi.notification.NotificationSender.*(..))")
private void anyNotificationSenderAPI() {}