Я создал простой модульный тест, но IntelliJ неправильно выделяет его красным. пометив это как ошибку
Нет бобов?
Как вы можете видеть ниже, он проходит тест? Так что это должно быть Autowired?
java
spring
intellij-idea
annotations
autowired
Robbo_UK
источник
источник
Ответы:
У меня была такая же проблема при создании приложения Spring Boot с использованием их
@SpringBootApplication
аннотации. Это примечание представляет@Configuration
,@EnableAutoConfiguration
и в@ComponentScan
соответствии с ссылкой пружинной .Как и ожидалось, новая аннотация работала правильно, и мое приложение работало нормально, но Intellij продолжал жаловаться на невыполненные
@Autowire
зависимости. Как только я вернулся к использованию@Configuration
,@EnableAutoConfiguration
и по@ComponentScan
отдельности ошибки прекратились. Похоже, что Intellij 14.0.3 (и, скорее всего, более ранние версии) еще не настроен на распознавание@SpringBootApplication
аннотации.А пока, если ошибки вас так сильно беспокоят, вернитесь к этим трем отдельным аннотациям. В противном случае игнорируйте Intellij ... ваше разрешение зависимостей правильно настроено, поскольку ваш тест пройден .
Всегда помни...
источник
@SpringBootApplication
я получил эту ошибку. Я следовал совету @ Jaõs Matos, используяscanBasePackages
параметр@SpringBootApplication
и указав пакет / пространства имен, которые следует сканировать.Добавьте аннотацию Spring
@Repository
над классом хранилища.Я знаю, что это должно работать без этой аннотации. Но если вы добавите это, IntelliJ не покажет ошибку.
Если вы используете Spring Data с расширяющим
Repository
классом, это будет конфликтным языком. Тогда вы должны указать простоту pagkages.И затем вы можете автоматически подключить свой репозиторий без ошибок.
Возможно, это не очень хорошее решение (я думаю, вы пытаетесь зарегистрировать репозиторий дважды). Но работать на меня и не показывать ошибки.
Возможно, в новой версии IntelliJ можно исправить: https://youtrack.jetbrains.com/issue/IDEA-137023
источник
Моя версия IntelliJ IDEA Ultimate (2016.3.4 Build 163), кажется, поддерживает это. Хитрость в том, что вам нужно включить плагин Spring Data.
источник
Иногда вам необходимо указать, где @ComponentScan должен сканировать компоненты. Вы можете сделать это, передав пакеты в качестве параметра этой аннотации, например:
Однако, как уже упоминалось, аннотация @SpringBootApplication заменяет @ComponentScan, поэтому в таких случаях вы должны сделать то же самое:
По крайней мере, в моем случае Intellij перестал жаловаться.
источник
@SpringBootApplication(scanBasePackages={"com.a.b, com.a.c"})
и хотя приложение работало нормально, Intellij это не понравилось. Меняется на@SpringBootApplication(scanBasePackages={"com.a.b", "com.a.c"})
исправленный для меня!Я всегда решаю эту проблему, выполняя следующие действия: Настройки> Инспекции> Spring Core> Код, чем переход от ошибки к предупреждению о серьезности
источник
Я использую Spring-Boot 2.0 и Intellij 2018.1.1 Ultimate Edition, и я столкнулся с той же проблемой.
Я решил, поместив @EnableAutoConfiguration в основной класс приложения
источник
Redundant declaration: @SpringBootApplication already applies @EnableAutoConfiguration
¯ \ _ (ツ) _ / ¯Проверьте, не пропустили ли вы аннотацию @Service в своем классе обслуживания, это было для меня.
источник
Ввод
@Component
или@configuration
в ваш файл конфигурации bean, кажется, работает, то есть что-то вроде:источник
Если вы не хотите вносить какие-либо изменения в свой код, просто чтобы порадовать IDE. Я решил это, добавив все компоненты к фасету Spring.
источник
Пока ваши тесты проходят, вы в порядке, нажмите
alt + enter
курсор на ошибку и в подменю первого элемента, который вы найдете,Disable Inspection
выберите, чтоисточник
У меня была похожая проблема в приложении Spring Boot. Приложение использует Feign (запросы клиента HTTP-синтеза от аннотированных интерфейсов). После
SomeClient
аннотирования интерфейса@FeignClient
Feign генерирует прокси-класс времени выполнения, реализующий этот интерфейс. Когда какой-либо компонент Spring пытается автоматически связать bean-компонент типаSomeClient
, Idea жалуется, что bean-компонент типа неSomeClient
найден, поскольку в проекте фактически не существует реального класса, и Idea не учат понимать@FeignClient
аннотацию каким-либо образом.Решение: аннотировать интерфейс
SomeClient
с@Component
. (В нашем случае мы не используем@FeignClient
аннотациюSomeClient
непосредственно, мы скорее используем метааннотацию,@OurProjectFeignClient
которая аннотирована,@FeignClient
и добавление@Component
аннотации к ней также работает.)источник
@Component
в интерфейс решает проблему. Но я думаю, что это не правильный путь ... На мой взгляд, это ошибка в IntelliJ IDEA или, что не так сложно, IntelliJ IDEA не готов к более новым версиям Feign. Он работает без более@Component
ранних симулированных версий (где вместо них@FeignClient
была аннотация - может быть, это является причиной проблемы?). Вы нашли какие-либо дополнительные детали (возможно, билет с ошибкой) для этого?org.springframework.cloud.netflix.feign
org.springframework.cloud.openfeign
@Component
)@FeignClient
изorg.springframework.cloud.netflix.feign
) пакета.Настройте контекст приложения, и все будет хорошо.
источник
И еще одна важная информация - добавьте,
ComponentScan
чтобы приложение знало о том, что ему нужно подключить. Это не относится к данному вопросу. Однако, если не@autowiring
выполняется вообще, то это, вероятно, ваше решение.источник
Что вам нужно сделать, это добавить
@ComponentScan("package/include/your/annotation/component")
вAppConfiguration.java
.Поскольку я думаю, что ваш
AppConfiguraion.java
пакет глубже, чем пакет компонента аннотации (@Service, @Component ...),такой как
"package/include/your/annotation/component/deeper/config"
.источник
У меня была похожая проблема в моем приложении. При добавлении аннотации некорректная подсветка исчезла.
источник
Я использую эту аннотацию, чтобы скрыть эту ошибку, когда она появляется в IntelliJ v.14:
источник
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Для меня решение заключалось в том, чтобы поместить его
@EnableAutoConfiguration
в класс Application,@SpringBootApplication
чтобы он подчеркивал его, потому что он избыточен. Удалите его и вуаля все ваши предупреждения о пропавших бобов исчезли! Глупая весна ...источник
в моем случае, каталог, который я пытался @Autowired, был не на том же уровне,
после настройки на том же уровне структуры ошибка исчезла
надеюсь, что это может помочь кому-то!
источник
Мое решение этой проблемы в моем весеннем загрузочном приложении состояло в том, чтобы открыть контекст весеннего приложения и вручную добавить класс для отсутствующего автонастроенного компонента!
(доступ через меню «Структура проекта» или окно инструмента Spring ... редактировать «Контекст приложения Spring»)
Таким образом, вместо SpringApplicationContext, просто содержащего мою конфигурацию Spring для ExampleApplication, он также содержит отсутствующий компонент:
SpringApplicationContext:
et voilà: сообщение об ошибке исчезло!
источник
Кажется, это все еще ошибка в последней версии IntelliJ и связана с возможной проблемой кэширования?
Если вы добавите аннотацию @Repository как mk321, упомянутую выше, сохраните, затем удалите аннотацию и сохраните снова, это решит проблему.
источник
Все, что вам нужно сделать, чтобы сделать эту работу, это следующий код:
источник
Мне просто нужно было использовать @EnableAutoConfiguration для решения этой проблемы, однако эта ошибка не имела никакого функционального влияния.
источник
Это можно решить, поместив @EnableAutoConfiguration в основной класс приложения весенней загрузки.
источник
Иногда - в моем случае это - причина неправильного импорта. Я случайно ввезла
вместо того
слепо принимая первый выбор в предложенном Идеей импорте. В первый раз это заняло у меня несколько минут :-)
источник
Удивительно, но ориентированный на Feign проект, который успешно работал с Eclipse, не мог работать в InteliJ. Когда приложение запустилось, InteliJ пожаловался на клиент Feign, который я пытался внедрить в слой serviceImpl, сказав: поле personRestClient (мой клиент Feign) в ... требуется компонент типа ... который не может быть найден. Попробуйте определить bean-компонент типа «....» в вашей конфигурации.
Я потратил много времени, пытаясь понять, что не так. Я нашел решение (для InteliJ), которое я не совсем понимаю:
Или выберите Затмение :)
источник
Проверьте правильность написания пакета вашего компонента
источник
Используйте @AutoConfigureMockMvc для тестового класса.
источник
Я решил проблему, установив плагин mybatis в IDEA. Когда я установил Mybatis Plugin, он исчез.
источник
просто вы должны сделать 2 шага
источник
IntelliJ IDEA Ultimate
Добавьте ваш основной класс в контекст приложения IntelliJ Spring, например Application.java
File
->Project Structure..
левая сторона: Настройка проекта -> Модули
справа: найдите в вашей структуре пакета
Spring
и добавьте+
Application.java
источник