Primavera: a injeção @Resource parou de funcionar no JDK9
No meu@Configuration
classe eu tenho dependências como o seguinte:
@Configuration
public class MyConfig {
@Resource(name = "firstDataSource")
private DataSource firstDataSource;
// more code
}
A injeção de dependência funcionou no Oracle JDK 8:firstDataSource
O campo foi injetado com sucesso com um valor não nulo.
Agora eu tentei executar o aplicativo (sem modificações) no JDK 9. O resultado é que@Resource
não aciona mais a injeção de dependência: tudo anotado nesta anotação permanecenull
.
Qual poderia ser o motivo para@Resource
parar de trabalhar?
A primavera 4.0.9 é usada no projeto.
Aqui está um projeto de teste demonstrando o problema:https://github.com/rpuch/test-spring-injection-jdk9
Ele contém um único teste:MainTest
que eu corro do meu IDE. Quando eu uso o JDK 8, ele gera
сен 29, 2017 10:45:13 PM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5f8ed237: startup date [Fri Sep 29 22:45:13 SAMT 2017]; root of context hierarchy
OK
Mas no JDK 9, ele lança uma exceção durante a inicialização, causada pelo seguinte:
Caused by: java.lang.IllegalStateException: bean1 is not injected
at Bean2.<init>(Bean2.java:7)
at Config2.bean2(Config2.java:16)
o que acontece quando a dependência não é injetada.