, Это оставляет код без изменений.
м@Configuration
класс у меня есть зависимости, подобные следующим:
@Configuration
public class MyConfig {
@Resource(name = "firstDataSource")
private DataSource firstDataSource;
// more code
}
Внедрение зависимостей работает в Oracle JDK 8:firstDataSource
поле было успешно введено с ненулевым значением.
Теперь я попытался запустить приложение (без изменений) в JDK 9. В результате@Resource
больше не запускает внедрение зависимостей: все, что отмечено этой аннотацией, остаетсяnull
.
В чем может быть причина@Resource
перестать работать?
Spring 4.0.9 используется в проекте.
Вот тестовый проект, демонстрирующий проблему:https://github.com/rpuch/test-spring-injection-jdk9
Он содержит один тест:MainTest
который я запускаю из моей IDE. Когда я использую JDK 8, он выводит
сен 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
Но в JDK 9 при запуске выдается исключение, которое вызвано следующим:
Caused by: java.lang.IllegalStateException: bean1 is not injected
at Bean2.<init>(Bean2.java:7)
at Config2.bean2(Config2.java:16)
что происходит, когда зависимость не вводится.