2010-03-30 4 views
0

J'ai mon haricot d'affaires ainsi défini:Suis-je autorisé à déclarer un intercepteur de cycle de vie sur un intercepteur?

@Local 
@Interceptors(BusinessInterceptor.class}) 
public class MyBean implements SomeBean { ... } 

Et je veux que mon BusinessInterceptor être configuré avec SpringBeanAutowiringInterceptor de printemps:

@Interceptors(SpringBeanAutowiringInterceptor.class) 
public class BusinessInterceptor { 
    @Autowired 
    private SomeSpringBean someSpringBean; 
} 

Est-ce permis/juridique? J'obtiens des erreurs (NPE, surtout) suggérant que les champs dans BusinessInterceptor n'ont pas été initialisés correctement.

Répondre

1

Je doute que cela puisse fonctionner. Si je comprends bien votre scénario, vous avez essentiellement deux conteneurs DI, l'un est le printemps et l'autre l'application. serveur lui-même. Chacun gère différents éléments. Le BusinessInterceptor est créé par l'application. serveur qui n'est pas au courant de Spring - le bean @Autowired n'est alors pas défini. Vous pouvez avoir les mêmes fonctionnalités que Spring et EJB3, mais vous pouvez avoir les mêmes fonctionnalités que EJB avec Spring.Le Spring a en effet des transactions déclaratives, injection de dépendances et des fonctionnalités AOP similaires aux intercepteurs EJB3 (ce sont les principales fonctionnalités gérées) D'autre part, EJB3 est maintenant si léger qu'il n'y a pas vraiment de raison d'utiliser Spring avec EJB3 Voir Future of enterprise Java: pile complète Spring ou full stack Java EE Mais cela ne répond pas à la question, et est juste une petite digression de la mienne :)

+0

+1 pour la digression petite mais extrêmement importante. –

Questions connexes