Ошибка DI в Micronaut появляется во время выполнения вместо времени компиляции? - PullRequest
1 голос
/ 18 июня 2019

Я недавно сделал сломанный бин и получил ошибку, которая, по-видимому, относится к DI: Message: No bean of type [java.lang.String] exists. Ensure the class is declared a bean and if you are using Java or Kotlin make sure you have enabled annotation processing.

Я не удивлен, что получил ошибку - мой бин был явно сломан.Что меня удивило, тем не менее, это то, что он ломался во время выполнения (при отправке первого запроса, где должен быть создан экземпляр сломанного компонента), тогда как я ожидал бы такую ​​ошибку во время компиляции при использовании Micronaut.

Данный компонент использует аннотацию @Inject в конструкторе, а не в каком-либо закрытом поле, где, как я понимаю, отражение во время выполнения становится необходимым.

Почему такая ошибка не обнаруживается при запуске механизма DI - atвремя компиляции?

1 Ответ

1 голос
/ 18 июня 2019

Невозможно знать, что бин не будет существовать во время компиляции.Баночка с определениями bean-компонентов может находиться только в пути к классам во время выполнения.

...