IntelliJ IDEA показывает ошибки, когда я использую @Autowired
аннотацию Spring в классе, но класс работает без проблем.
Вот это сообщение об ошибке:
Члены с автоматическим подключением должны быть определены в допустимом компоненте Spring (@ Component / @ Service и т. Д.) Less ... (Ctrl + F1) Проверяет проблемы с автоматическим подключением в классе bean-компонента.
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Ответы:
У меня была такая же проблема с IntelliJ IDEA 13.1.4. Я решил ее, удалив аспект Spring (Файл-> Структура проекта) и оставив его только для отображения «Обнаружение».
источник
Если вы знаете, что bean-компонент существует, и это всего лишь проблема проверок, просто добавьте следующее перед объявлением переменной:
Иногда IntelliJ не может разрешить, если был объявлен компонент, например, когда компонент включен условно, а разрешение условия происходит во время выполнения.
источник
Я исправил это, добавив предупреждение о подавлении:
источник
Тут такая же ошибка!
Кажется, Intellij не может проверить, является ли реализация класса @Service или @Component.
Решите его, просто изменив значение с ошибки на предупреждение (нажатие Alt + Enter).
источник
Удалите файл .iml из всех модулей вашего проекта и затем перейдите в File -> Invalidate Caches / Restart.
источник
.iml
файл, выбрал реимпорт в Maven опций наpom.xml
файл, и сделал ,ctrl + s
чтобы регенерировать.iml
. Ошибок больше нет.Файл -> ProjectStructure -> Модули -> + (в центральной колонке) -> Spring -> OK
источник
У меня такая же проблема. Я решил это, добавив аспект Spring (Файл-> Структура проекта) для каждого соответствующего модуля, а затем добавив файлы конфигурации. Для некоторых проектов (spring mvc) файлы конфигурации обнаруживаются автоматически. Однако для проекта jar мне пришлось добавить файлы конфигурации вручную.
источник
Убедитесь, что у вас есть правильные определения компонентов Spring. Иногда приложение работает нормально, оно просто отображает ошибку в IDE, проверьте файл iml вашего проекта, если у вас определен аспект Spring.
источник
Решили проблему, перейдя в Файл >> Структура проекта >> Фасеты, а затем добавив все файлы конфигурации в Spring Facet. После этого он начал обнаруживать файлы, в которых находятся bean-компоненты, и смог отсортировать проблему. IntelliJ, предоставляющий эту проверку, весьма ценен, и ИМХО не следует отключать.
источник
Похоже на проблему видимости - родительский контроллер не видит Компонент, который вы пытаетесь подключить.
Попробуй добавить
к родительскому контроллеру.
источник
Убедитесь, что ваша идея IntelliJ Idea (IDE) осведомлена обо всех необходимых конфигурациях пружин, на соответствие которым проверяется ваш модуль.
Вы можете проверить это в
Иногда нам нужно явно указать IDE, что конфигурация Spring исходит из зависимости (jar, присутствующий в пути к классам вашего проекта)
источник
У меня та же проблема. Моя причина заключалась в том, что bean-компонент, содержащий ссылку с автоматическим подключением, не был компонентом Spring (это был EJB), но имел перехватчик SpringBeanAutowiringInterceptor, позволяющий использовать автоматическое подключение. Я думаю, что Intellij не учитывает эту возможность при проверке Autowiring.
источник
У меня тоже была эта пробема. Выполнение alt+, enterа затем запрос либо перезапустить, либо отключить проверку Spring на затронутой строке, исправило это. Это стало проблемой только после обновления 13.4.
источник
в моем случае мне не хватало записи в web.xml:
и в файле контекста приложения:
после добавления этих тегов и запуска maven для перестройки проекта ошибка autowired в intellj исчезает, и в левом поле появляется значок bean-компонента:
источник
Моя - за то, что я не добавляю @Repository в мой интерфейс CrudRepository, учебник, который я смотрел, не добавлял его в STS и не жаловался.
источник
Вы должны проверить, есть ли у вас @Component, @Repository или аналогичный добавленный в класс
источник
Я решил это, добавив веб-аспект.
источник
источник
Вот так я решил эту проблему. В IntelliJ все ваши пакеты должны быть в дополнительном пакете, который является дополнительным пакетом main / java. Например, я поместил все свои пакеты в src / main / java / com.misisol.watchStore /, и spring может найти мои beans после этого.
источник
Inject Bean с @Qualifier решил проблему для меня.
источник
У меня была аналогичная проблема. Я решил это, сняв флажок «Обрабатывать явно аннотированные beans» (см. Снимок экрана ниже). Эта опция включена по умолчанию в Linux. Теперь видны аннотации @Service и @Configurations. Скриншот
источник
немного поздно, но я надеюсь, что это поможет кому-то другому.
Обязательно поместите @Service в класс реализации для службы
Вот как я исправил ошибку.
источник
Я знаю, что это старый вопрос, но я не нашел ответов, которые решали бы эту проблему для меня, поэтому я предоставлю свое решение.
Примечание: я думал, что проблема могла быть в этом , но моя проблема не была связана с реализацией одного и того же интерфейса дважды. С помощью
@Qualitier
действительно решило мою проблему, но это была повязка, а не подходящее решение, поэтому я не соглашался с этим.ЗАДНИЙ ПЛАН
Мне поручено поддерживать старый проект, который прошел через разные версии spring и обновлялся только для отдельных модулей, поэтому, мягко говоря, потребовался рефакторинг. Изначально у меня возникла проблема с дублированием bean, и, когда я возился с вещами, проблема менялась между проблемой OP и проблемой дублированного bean, даже если был только один bean; переход к повторяющимся bean-компонентам всегда происходил в одном классе.
ПРОБЛЕМА
Проблема присутствовала в
@Repository
классе, который был@Autowired
в@Service
классе, который также имел@ComponentScan
аннотацию. Я заметил, что у меня также была пружина,application-config.xml
котораяcontext:component-scan
Spring, который базовый пакет, что, как мне кажется, было оригинальным подходом в более старых версиях Spring. Я был в процессе создания новой ветки, взяв части старой ветки и новой ветки в проекте поддержки, который использовался в различных проектах, которые разрабатывались в течение нескольких лет, и поэтому было такое сочетание и совпадение методологий.ПРОСТОЕ РЕШЕНИЕ
Поскольку более современный подход к использованию
@ComponentScan
уже был реализован, я просто удалил,application-config.xml
и проблема была решена.источник
У меня сработало следующее:
источник
Я мог бы немного опоздать, но после того, как потратил часы на изучение этого вопроса.
Я обнаружил, что в последней версии IntelliJ 2020 @AutoWired является необязательным, а внедрение зависимостей на основе конструктора предпочтительнее.
Я решил проблему, просто удалив аннотацию @AutoWired из класса службы и контроллера и использовав инъекцию зависимостей на основе конструктора.
Эта ссылка может помочь.
Удачного кодирования!
источник
У меня была эта проблема только с одной службой с инъекцией зависимостей на основе конструктора с версией IntelliJ 2019.2.4. Я счел полезным изменить имя службы (shift + f6), а затем отменить изменения с уровня git.
источник