Heim  >  Artikel  >  Java  >  So beheben Sie den SpringBoot @Componet-Annotationsinjektionsfehler

So beheben Sie den SpringBoot @Componet-Annotationsinjektionsfehler

PHPz
PHPznach vorne
2023-05-14 11:55:062444Durchsuche

    @Component-Annotationsinjektion fehlgeschlagen

    Problembeschreibung

    Beim Schreiben des Springboot-Programms wurde die @Component-Annotation eindeutig zur Person-Klasse hinzugefügt, aber der Container zeigte, dass das Bean-Objekt der Person-Klasse nicht gefunden werden konnte .

    Ich habe im Internet nach vielen herkömmlichen Lösungen gesucht, aber später festgestellt, dass es ein Problem beim Paketscannen sein könnte, da mein damaliges Hauptprogramm in einem Ordner mit demselben Namen abgelegt war Das Hauptprogramm gemäß den Standardregeln zum Scannen von Paketen. Scannen Sie die Klassen in dem Paket, in dem sich das Hauptprogramm befindet, und alle seine Unterpakete. Die Person-Klasse unter dem Domänenpaket wird dann natürlich nicht gescannt, obwohl @Component markiert ist, wird es nicht wirksam.

    ? Treten Sie in eine Grube, es gibt eine Schnittstelle. In der Implementierungsklasse dieser Schnittstelle muss die Annotation @Autowired verwendet werden. Ich habe die Annotation @Component nicht zur Implementierungsklasse hinzugefügt, was dazu führte, dass Spring einen Fehler meldete und kann diese Klasse nicht finden. In der Klasse habe ich beispielsweise die Annotation @Autowired in der Implementierungsklasse verwendet. Die annotierte Klasse wird aus dem Spring-Container entfernt, und die aufgerufene Implementierungsklasse muss ebenfalls entfernt werden vom Spring-Container verwaltet werden, plus die Einführung von @Component

    @ComponentScan("com.example")
    SpringBoot @Componet注解注入失败如何解决

    Es ist unvermeidlich, auf diese Annotation zu stoßen @Component

    @Controller-Controller (Injektionsdienst)

    wird zum Annotieren der Kontrollschicht verwendet Äquivalent zur Aktionsschicht in Struts

    @Service-Service (Injektions-Dao)

    wird zum Beschriften der Service-Schicht verwendet, die hauptsächlich für die Geschäftslogikverarbeitung verwendet wird

    @Repository (Implementierung des Dao-Zugriffs)

    wird verwendet Beschriften Sie die Datenzugriffsschicht, die auch zum Beschriften von Datenzugriffskomponenten, dh DAO-Komponenten, verwendet werden kann Verschiedene Komponenten, das heißt, wenn unsere Klasse nicht zu verschiedenen Klassifizierungen gehört (nicht zu @Controller, @Services usw. gehört), können wir @Component verwenden, um diese Klasse mit Anmerkungen zu versehen.

    Beispiel

    Dies ist das Schreibformat in der Konfigurationsdatei, z. B. Anwendungsinhalt. Fügen Sie einfach die Annotation @component zur Klasse hinzuDas Folgende ist eine Scankomponente, die die Komponente einführt

    @Component("conversionImpl")
    //其实默认的spring中的Bean id 为 conversionImpl(首字母小写)
    public class ConversionImpl implements Conversion {
        @Autowired
        private RedisClient redisClient;
    }

    Das obige Beispiel ist ein Beispiel für die Einführung die Komponentenkomponente, wobei Basispaket alle Unterpakete darstellt, die gescannt werden müssen.

    Gemeinsamkeiten:

    Mit @controller, @service, @repository und @component annotierte Klassen werden alle zur Verwaltung in den Spring-Container aufgenommen

    Das obige ist der detaillierte Inhalt vonSo beheben Sie den SpringBoot @Componet-Annotationsinjektionsfehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen