Olá amigos, estou tentando utilizar um @Resource me um bean anotado com @Service que por sua vez tem um BO anotado com @Component que por sua vez tem um DAO anotado com @Repository.
O problema é que a minha variavel (service) que está anotada com @Resource está vindo nula.
Naõ é necessário criar gettes e seets para realizar injeção… sem trechos de código/configuração fica dificil dizer o que pode ser.
darksteel3000
Infelizmente não posso postar parte alguma do codigo, pois é de um projeto grande daqui.
Mas posso dizer que estou fazendo igual aos outros Resources que sempre criei nesse projeto e só este não funciona.
Acho muito estranho ele me retornar null.
luksrn
então boa sorte
von.juliano
Se não pode colocar o código, faça exemplos semelhantes para postar, está difícil até entender qual é o problema.
darksteel3000
Imagine, o cenario que eu descrevi acima:
Olá amigos, estou tentando utilizar um @Resource me um bean anotado com @Service que por sua vez tem um BO anotado com @Component que por sua vez tem um DAO anotado com @Repository.
E o tal atributo anotado com @Service, está sendo visto pelo Spring, mas ao criar um atributo em outra classe e colocar um @Resource ele não consegue injetar as dependencias.
Uma coisa que eu esqueci de informar é que isso é feito a partir de um ServletContextListener que o tomcat inicia ao subir o servidor. Daí possa ser que ele não tenha carregado tudo ainda… Pois esses Services servem para fazer um JOB que é iniciado quando o servidor é levantado.
von.juliano
Não está fácil de entender o cenário que você descreveu, na minha interpretação, imagino que está uma bagunça.
Entendo. Sobre a solução, não é uma boa idéia. Está usando o Spring da forma errada, já que agora ele não injeta a dependência pra você, é você que está puxando dele.
darksteel3000
Com certeza está de forma errada.
Mas é o que nos resta enquanto o arquiteto procura outro modo de se fazer.
jaboot
POG detected
rodrigo_corinthians
jaboot:
POG detected
O bom que foi com o aval do arquiteto...
No seu Service tenta implementar a interface ServletContextAware e no metodo coloca @PostConstruct, algo mais ou menos assim...
@ServicepublicclassIniciaServicoimplementsServletContextAware{@ResourceprivateJobFtpServicejobFtpService;privateServletContextservletContext;@PostConstructpublicvoidinit(){System.out.println(jobFtpService);// Sua regra}@OverridepublicvoidsetServletContext(ServletContextservletContext){this.servletContext=servletContext;}}