Injeção de dependência com Spring (anotações JSR 330) no WebSphere 7 não está funcionando
Eu tenho um aplicativo corporativo construído com o Java 6, o Spring Framework 3.1.2 e o Mule-ESB 3.3.0, entre outras bibliotecas não relacionadas a essa questão.
Nossos grãos e serviços são todos declarados com@Named
e@Inject
Anotações JSR-330, respectivamente para varredura automática de componentes e para injeção de dependência (sem EJBs, somente beans de serviço). Quando implantado no JBoss 4.2.3 (nosso ambiente de teste), tudo funciona bem. No entanto, quando implementados no WebSphere 7, as anotações JSR-330 parecem não estar funcionando. Os feijões marcados com@Named
simplesmente não são detectados.
Eu posso garantir que tudo está configurado corretamente (já que está funcionando no JBoss). Especificamente, o<context:component-scan />
tem obase-package
atributo definido corretamente e oscope-resolver
atributo configurado corretamente para usarJsr330ScopeMetadataResolver
(nós tentamos sem isso também).
Estou ciente de que o WebSphere 7 (7.0.0.23) pode não suportar esse tipo de anotação. Eu ainda estou para testá-lo com@Component
e@Autowired
Equivalentes da primavera. Infelizmente, gostaríamos muito de usar as anotações do JSR 330 para que nossas classes não dependessem diretamente do Spring, mesmo usando o Spring Framework.
No entanto, embora eu tenha passado um dia inteiro de trabalho procurando por uma declaração definitiva de que o WebSphere 7 não suporta anotações JSR 330, não encontrei nada até agora.
Além disso, não vejo por que isso não funcionaria, já que estou assumindo que o Spring Framework é quem faz todo o trabalho, através do<context:component-scan />
directiva noapplication-context.xml
Arquivo.
Alguém pode trazer alguma luz para esta questão?
Existe uma maneira de ativar a injeção de dependência por meio de anotações no WebSphere 7?
Se eu voltar da JSR 330@Named
/ @Inject
anotações para o próprio Spring@Component
e@Autowired
é provável que funcione?
Numa tentativa desesperada, posso estender o Spring'sComponentScanBeanDefinitionParser
então ele detectará anotações JSR 330 mesmo no WebSphere 7?
Se nada funcionar, acabarei voltando à configuração XML simples. Isso é altamente indesejável, no entanto, porque haverá centenas de beans para serem configurados manualmente no XML.