Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Injeção de dependência não funciona

Boa tarde Pessoal, Estou tendo um problema em um teste com JSF, basicamente eu tenho a entidade, o serviço e a view.

Na view, quero chamar meu serviço pelo ManagedProperty assim:

'''

@ManagedBean
@ViewScoped
@Getter
@Setter
public class EpiView implements Serializable {

    @ManagedProperty(value = "#{epiService}")
    private EpiService epiService;

    private Epi epi;

    @PostConstruct
    public void inicia() {
        epi = epiService.epiById();
    }

}

e meu serviço:

@Service
public class EpiService {

    public Epi epiById() {
        Epi epi = new Epi();
        epi.setId(new EpiPK());
        epi.getId().setCenCust("13.02");
        epi.getId().setProduto("Bomba");
        epi.setQuantidadeDias(15);
        epi.setQuantidadeRetirada(1000);
        epi.setCategoria("Veneno");
        epi.setQntTroca(200);

        return epi;
    }

}

Não estou usando banco é apenas um teste, porem quando a página sobe eu tenho uma NullPointerException, o serviço não está sendo instanciado, se eu criar a instancia na mão "epiService = new EpiService();" ele funciona e é exibido na página normalmente, acredito que seja um problema na injeção de dependência, eu tentei também usar o @Autowired, porém o serviço vem null do mesmo jeito.

O projeto é no Eclipse Version: 2019-03 (4.11.0) Estou usando Maven com as seguintes dependências.

jsf-api-2.2.12.jar
jsf-impl-2.2.12.jar
javax.servlet-api-3.0.1.jar
spring-web-4.3.9.RELEASE.jar
spring-aop-4.3.9.RELEASE.jar
spring-beans-4.3.9.RELEASE.jar
spring-context-4.3.9.RELEASE.jar
spring-expression-4.3.9.RELEASE.jar
spring-core-4.3.9.RELEASE.jar
commons-logging-1.2.jar
lombok-1.18.8.jar
cdi-api-1.2.jar
javax.el-api-3.0.0.jar
javax.interceptor-api-1.2.jar
2 respostas
solução!

Consegui resolver incluindo 2 classes em meu projeto.

@Configuration
@ComponentScan
public class Config {

}

e

public class Initializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext sc) throws ServletException {
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        rootContext.register(Config.class);
        sc.addListener(new ContextLoaderListener(rootContext));

    }

}

Olá Ricardo, que bom que conseguiu resolver o seu problema. Como já está tudo resolvido, vou fechar o tópico, ok?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software