Должен ли Micronaut выдавать предупреждения / ошибки компилятора для ошибок внедрения зависимостей?

Я только начинаю работать с Micronaut, и одна вещь, которую я был удивлен, заключается в том, что, несмотря на обработчики аннотаций, похоже, нет никаких предупреждений, указывающих на наличие проблемы с внедрением зависимостей. Например, когда у меня есть @Inject для интерфейса с двумя конкретными реализациями. Я ожидал, что моя IDE предоставит компилятору предупреждение о введении аннотации, сообщающее мне, что существует 2 возможных привязки, и мне нужно будет предоставить аннотацию @Named для устранения неоднозначности.

Мое ожидание неверно, и проблемы с привязкой по-прежнему обнаруживаются только во время выполнения, или я неправильно настроил свою IDE, чтобы правильно информировать меня об этих ошибках DI с помощью Micronaut?

Java version: 8
IDE: IntelliJ IDEA Ultimate
Micronaut Version: 1.1.1
Build Tool: maven

person Matthew Madson    schedule 14.05.2019    source источник


Ответы (1)


Наличие 2 доступных во время компиляции не означает, что во время выполнения будут доступны 2.

Люди задавали тот же вопрос наоборот, задаваясь вопросом, почему мы не можем сообщить во время компиляции, что bean-компонент не существует, и ответ заключается в том, что просто потому, что он не существует во время компиляции, не означает, что его не будет. во время выполнения. Вы не знаете во время компиляции, что будет в пути к классам во время выполнения, bean-компоненты могут быть настроены для условной загрузки в зависимости от условий выполнения и т. Д.

ИЗМЕНИТЬ

Я понимаю, что не отвечал прямо на ваши вопросы ...

Мое ожидание неверно, и проблемы с привязкой по-прежнему обнаруживаются только во время выполнения, или я неправильно настроил свою IDE, чтобы правильно информировать меня об этих ошибках DI с помощью Micronaut?

Ответ на первую часть - да, ваше ожидание было неверным. Ответ на вторую часть заключается в том, что ваша конфигурация IDE не имеет отношения к рассматриваемому поведению.

Надеюсь, это поможет.

person Jeff Scott Brown    schedule 15.05.2019