IntelliJ IDEA wyświetla błędy, gdy używam @Autowired
adnotacji Springa w klasie, ale klasa działa bez problemu.
Oto ten komunikat o błędzie:
Składniki autoprzewodowane muszą być zdefiniowane w prawidłowym elemencie wiosennym (@ Component / @ Service itp.) Mniej ... (Ctrl + F1) Sprawdza problemy z przewodami automatycznymi w klasie fasoli.
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Odpowiedzi:
Miałem ten sam problem z IntelliJ IDEA 13.1.4. Rozwiązałem go, usuwając aspekt Spring (Plik-> Struktura projektu) i pozostawiając po prostu pokazanie „Wykrywanie”.
źródło
Jeśli wiesz, że fasola istnieje i to tylko problem z inspekcjami, po prostu dodaj przed deklaracją zmiennej:
Czasami IntelliJ nie może rozstrzygnąć, czy fasola została zadeklarowana, na przykład gdy komponent jest dołączony warunkowo, a rozwiązanie warunku następuje w czasie wykonywania.
źródło
Naprawiłem to, dodając ostrzeżenie o wyłączeniu:
źródło
Tutaj jest ten sam błąd!
Wygląda na to, że Intellij nie może zweryfikować, czy implementacja klasy to @Service czy @Component.
Rozwiąż to po prostu zmieniając się z błędu na ostrzeżenie (naciśnięcie Alt + Enter).
źródło
Usuń plik .iml z całego modułu projektu, a następnie przejdź do Plik -> Unieważnij pamięć podręczną / Uruchom ponownie
źródło
.iml
plik, wybrał do powrotnego przywozu w Maven opcji wpom.xml
pliku, a zrobiłctrl + s
się zregenerować.iml
. Błędy zniknęły.Plik -> ProjektStructure -> Moduły -> + (w środkowej kolumnie) -> Wiosna -> OK
źródło
Miałem ten sam problem. Rozwiązałem to, dodając aspekt Spring (File-> Project Structure) dla każdego odpowiedniego modułu, a następnie dodając pliki konfiguracyjne. W przypadku niektórych projektów (wiosna MVC) pliki konfiguracyjne były wykrywane automatycznie. Jednak w przypadku projektu jar musiałem ręcznie dodać pliki konfiguracyjne.
źródło
Upewnij się, że masz poprawne definicje fasoli wiosennej. Czasami aplikacja działa dobrze, po prostu wyświetla błąd w IDE, sprawdź plik 'iml' projektu, jeśli masz zdefiniowany aspekt Spring.
źródło
Rozwiązano problem, przechodząc do File >> Project Structure >> Facets, a następnie dodając wszystkie pliki konfiguracyjne do Spring Facet. Następnie zaczął wykrywać pliki, w których znajdują się ziarna, i był w stanie rozwiązać problem. IntelliJ daje to sprawdzenie jest dość cenne i IMHO nie powinno być wyłączane.
źródło
Wygląda na to, że występuje problem z widocznością - kontroler nadrzędny nie widzi komponentu, który próbujesz połączyć.
Spróbuj dodać
do kontrolera nadrzędnego.
źródło
Upewnij się, że Twój IntelliJ Idea (IDE) jest świadomy wszystkich niezbędnych konfiguracji sprężyn, względem których jest sprawdzany Twój moduł.
Możesz to sprawdzić poniżej
Czasami musimy wyraźnie powiedzieć IDE, że konfiguracja sprężynowa pochodzi z zależności (jar obecny w ścieżce klas projektu)
źródło
Mam ten sam problem. Mój był taki, ponieważ fasola zawierająca autowired referencję nie była komponentem Spring (był to EJB), ale otrzymała SpringBeanAutowiringInterceptor Interceptor umożliwiającą użycie autowiring. Myślę, że Intellij nie bierze tej możliwości podczas inspekcji Autowiring.
źródło
Ja też miałem ten problem. Wykonanie alt+, entera następnie prośba o ponowne uruchomienie lub wyłączenie kontroli wiosennej na wywołanej linii rozwiązało problem. Wydaje się, że stało się to problemem dopiero po aktualizacji 13.4.
źródło
w moim przypadku brakowało mi napisania w web.xml:
aw pliku kontekstowym aplikacji:
po dodaniu tych tagów i uruchomieniu programu maven, aby odbudować projekt, błąd autowired w programie intellj znika, a ikona fasoli pojawia się na lewym marginesie:
źródło
Mój dotyczy nie dodawania @Repository na moim interfejsie CrudRepository, samouczek, który oglądałem, nie dodał go do STS i nie narzekał.
źródło
Powinieneś sprawdzić, czy masz @Component, @Repository lub podobne dodane do klasy
źródło
Rozwiązałem to, dodając aspekt sieciowy.
źródło
źródło
W ten sposób rozwiązałem ten problem. W IntelliJ wszystkie twoje pakiety powinny znajdować się w pakiecie podrzędnym, który jest pakietem podrzędnym main / java. Na przykład umieściłem wszystkie moje pakiety w katalogu src / main / java / com.misol.watchStore / i spring może znaleźć moje ziarna.
źródło
Inject Bean with @Qualifier rozwiązał problem za mnie.
źródło
Miałem podobny problem. Rozwiązałem to, odznaczając opcję „Przetwarzaj ziarna z jawnymi adnotacjami” (patrz zrzut ekranu poniżej). Ta opcja jest domyślnie włączona w systemie Linux. Teraz adnotacje @Service i @Configurations są widoczne. zrzut ekranu
źródło
trochę późno, ale mam nadzieję, że pomoże to komuś innemu.
Upewnij się, że umieszczasz @Service w klasie implementacji usługi
W ten sposób naprawiłem błąd.
źródło
Wiem, że to stare pytanie, ale nie znalazłem odpowiedzi, które rozwiązałyby ten problem, więc podam moje rozwiązanie.
Uwaga: wydawało mi się, że przyczyną problemu może być to , ale mój problem nie był związany z dwukrotnym wdrożeniem tego samego interfejsu. Używanie
@Qualitier
sprawiło, że mój problem zniknął, ale był to bandaż, a nie właściwe rozwiązanie, więc nie poprzestałem na tym.TŁO
Mam za zadanie utrzymanie starego projektu, który przeszedł przez różne wersje Spring i został zaktualizowany tylko dla oddzielnych modułów, więc rzeczy wymagały co najmniej refaktoryzacji. Początkowo miałem problem z duplikatem fasoli i majstrowanie przy różnych rzeczach zmieniało problem między wydaniem OP a problemem zduplikowanej fasoli, mimo że był tylko jeden ziarno; nawigacja do duplikatów fasoli zawsze prowadziła do tej samej klasy.
PROBLEM
Problem był obecny w
@Repository
klasie, która była@Autowired
w@Service
klasie, która również miała@ComponentScan
adnotację. Zauważyłem, że miałem również sprężynę,application-config.xml
która robiłacontext:component-scan
na podstawowym pakiecie, co moim zdaniem było oryginalnym podejściem w starszych wersjach Springa. Byłem w trakcie tworzenia nowego oddziału, biorąc części starego i nowszego oddziału w projekcie wsparcia, który był wykorzystywany w różnych projektach, które były rozwijane przez kilka lat i dlatego był taki mix-and-match metodologii.PROSTE ROZWIĄZANIE
Ponieważ bardziej nowoczesne podejście do korzystania
@ComponentScan
było już zaimplementowane, po prostu usunąłemapplication-config.xml
i problem został rozwiązany.źródło
Pracowały dla mnie:
źródło
Mogę się trochę spóźnić, ale po spędzeniu godzin i badaniu tego problemu.
Dowiedziałem się, że w najnowszej wersji IntelliJ 2020 @AutoWired jest opcjonalny i preferowane jest wstrzykiwanie zależności oparte na konstruktorze.
Rozwiązałem problem, po prostu usuwając adnotację @AutoWired z klasy Service and Controller i używając iniekcji zależności opartej na konstruktorze.
Ten link może pomóc.
Miłego kodowania!
źródło
Miałem ten problem tylko z jedną usługą z iniekcją zależności opartą na konstruktorze z wersją IntelliJ 2019.2.4. Pomogła mi zmiana nazwy usługi (shift + f6), a następnie odrzucenie zmian z poziomu gita.
źródło