2009-07-29 3 views
3

J'ai remarqué récemment que le printemps peut me connecter mes ejb si j'annote l'ejb avec @ Interceptors (SpringBeanAutowiringInterceptor.class). Je n'ai jamais vraiment fait cela alors je ne connais pas les détails. Je me demandais, est-ce qu'il y a un moyen de faire fonctionner cela avec d'autres types de beans, par exemple, @WebService annotés aussi.Quelque chose comme câblage EJB au printemps pour les non EJB

En ce moment dans mes classes de service Web (parce que le serveur d'application les gère), je dois charger les dépendances à partir de BeanFactory et préférerais donc les avoir autowired. Je sais que je pourrais utiliser l'annotation @Configurable, mais je ne suis pas particulièrement désireux de spécifier et d'agent sur la machine virtuelle.

Est-ce possible?

Répondre

3

Encore une fois, le printemps a pensé à ce cas d'utilisation et a pris soin de lui!

Le problème est que @WebService n'est pas un ressort annotation, il est une annotation JAX-WS et donc des classes qui sont annotés avec @WebService à être exposés en tant que services Web ne sont pas gérés par le printemps, mais leur le cycle de vie est géré par JAX-WS.

La façon de gérer ce cas est d'étendre le bean géré JAX-WS org.springframework.web.context.support.SpringBeanAutowiringSupport - cela permettra à l'annotation @Autowire, par exemple, de fonctionner dans ce bean. voir here pour plus d'informations

1

Oui, bien sûr. Il y a @WebService, @Repository, @Controller, @Service, @Endpoint et d'autres annotations au printemps. Voici un example.

+0

Entièrement conscient de @Repository et des autres (ils viennent du printemps), mais je me demande si le ressort sera capable d'autowire sur les objets créés par le serveur d'application (annotation @WebService)? –