

Parameter 0 des Konstruktors in com.example.demo.service.UserServiceImpl erfordert eine Bean vom Typ „com.example.demo.dao.UserDao'
Während des Entwicklungsprozesses stoßen wir häufig auf verschiedene Fehler und Ausnahmen. Eines der häufigsten Probleme besteht darin, dass Sie bei der Verwendung des Spring-Frameworks auf etwas Ähnliches stoßen wie „Parameter 0 des Konstruktors in com.example.demo.service.UserServiceImpl erfordert eine Bean vom Typ „com.example.demo.dao.UserDao““ " Fehlermeldung. Diese Fehlermeldung bedeutet, dass im Konstruktor der UserServiceImpl-Klasse der erste Parameter mit einer Bean vom Typ UserDao injiziert werden muss, das System die entsprechende Bean jedoch nicht finden kann. Es gibt viele Möglichkeiten, dieses Problem zu lösen, und dieser Artikel stellt Ihnen eine einfache und effektive Lösung vor.
Frageninhalt
Wer kann mir beim Beheben dieses Fehlers helfen
parameter 0 of constructor in com.example.demo.service.userserviceimpl required a bean of type 'com.example.demo.dao.userdao' that could not be found. action: consider defining a bean of type 'com.example.demo.dao.userdao' in your configuration.
Hier sind meine Dateien:
usercontroller.java
package com.example.demo.controller; import com.example.demo.model.user; import com.example.demo.service.userservice; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.*; import java.util.list; @restcontroller @requestmapping("/api/users") public class usercontroller { @autowired private final userservice userservice; public usercontroller(userservice userservice) { this.userservice = userservice; } @getmapping("/{userid}") public user getuserbyid(@pathvariable long userid) { return userservice.getuserbyid(userid); } @getmapping public list<user> getallusers() { return userservice.getallusers(); } @postmapping public long adduser(@requestbody user user) { return userservice.adduser(user); } @putmapping("/{userid}") public void updateuser(@pathvariable long userid, @requestbody user user) { user.setuserid(userid); userservice.updateuser(user); } @deletemapping("/{userid}") public void deleteuser(@pathvariable long userid) { userservice.deleteuser(userid); } }
userservice.java
package com.example.demo.service; import com.example.demo.model.user; import org.springframework.stereotype.component; import org.springframework.stereotype.service; import java.util.list; public interface userservice { user getuserbyid(long userid); list<user> getallusers(); long adduser(user user); void updateuser(user user); void deleteuser(long userid); }
userserviceimpl.java
package com.example.demo.service; import com.example.demo.dao.userdao; import com.example.demo.model.user; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service; import java.util.list; @service public class userserviceimpl implements userservice { private final userdao userdao; @autowired public userserviceimpl(userdao userdao) { this.userdao = userdao; } @override public user getuserbyid(long userid) { return userdao.getuserbyid(userid); } @override public list<user> getallusers() { return userdao.getallusers(); } @override public long adduser(user user) { return userdao.adduser(user); } @override public void updateuser(user user) { userdao.updateuser(user); } @override public void deleteuser(long userid) { userdao.deleteuser(userid); } }
userdaoimpl.java
package com.example.demo.dao; import com.example.demo.model.user; import org.springframework.jdbc.core.beanpropertyrowmapper; import org.springframework.jdbc.core.jdbctemplate; import org.springframework.stereotype.repository; import java.util.list; @repository public class userdaoimpl implements userdao { private final jdbctemplate jdbctemplate; public userdaoimpl(jdbctemplate jdbctemplate) { this.jdbctemplate = jdbctemplate; } @override public user getuserbyid(long userid) { string sql = "select * from user where user_id = ?"; return jdbctemplate.queryforobject(sql, new object[]{userid}, new beanpropertyrowmapper<>(user.class)); } @override public list<user> getallusers() { string sql = "select * from user"; return jdbctemplate.query(sql, new beanpropertyrowmapper<>(user.class)); } @override public long adduser(user user) { string sql = "insert into user (first_name, last_name, email, user_avatar_url, podcast_id) " + "values (?, ?, ?, ?, ?)"; jdbctemplate.update(sql, user.getfirstname(), user.getlastname(), user.getemail(), user.getuseravatarurl(), user.getpodcastid()); // retrieve the auto-generated user_id return jdbctemplate.queryforobject("select last_insert_id()", long.class); } @override public void updateuser(user user) { string sql = "update user set first_name = ?, last_name = ?, email = ?, " + "user_avatar_url = ?, podcast_id = ? where user_id = ?"; jdbctemplate.update(sql, user.getfirstname(), user.getlastname(), user.getemail(), user.getuseravatarurl(), user.getpodcastid(), user.getuserid()); } @override public void deleteuser(long userid) { string sql = "delete from user where user_id = ?"; jdbctemplate.update(sql, userid); } }
userdao.java
package com.example.demo.dao; import com.example.demo.model.user; import java.util.list; public interface userdao { user getuserbyid(long userid); list<user> getallusers(); long adduser(user user); void updateuser(user user); void deleteuser(long userid); }
demoapplication.java
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication //@ComponentScan("com.example.demo.service") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Ich habe es versucht @componentscan("com.example.demo.service")
in demoapplication.java, aber es funktioniert nicht.
Ich habe auch versucht, @autowire einzufügen und den Dienst mit @service zu markieren. Ich habe auch alle anderen Kommentare überprüft und nichts anderes gefunden, was fehlt
Ich möchte einen sauberen Build und Zugriff auf die API
Fehler
Workaround
Ihnen fehlt die aktuelle Implementierung von userservice
的实现。如果您想保留 @repository
(userdao
), dann können Sie Ihren Service wie folgt umschreiben:
@Service public class UserService { private final UserDao userDao; @Autowired public UserService(UserDao userDao) { this.userDao = userDao; } // implement using your DAO User getUserById(Long userId); List<User> getAllUsers(); Long addUser(User user); void updateUser(User user); void deleteUser(Long userId); }
Dadurch sollte es für usercontroller
zur Nutzung verfügbar sein.
Das obige ist der detaillierte Inhalt vonParameter 0 des Konstruktors in com.example.demo.service.UserServiceImpl erfordert eine Bean vom Typ „com.example.demo.dao.UserDao'. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

Ich möchte den Anforderungstext ändern, bevor ich ihn an die angegebene URL weiterleite. Ändern Sie den Körper basierend auf der Dokumentation, die ich verwende: org.springframework.cloud.gateway.filter.factory.rewrite.modifyrequestbodygatewayfilterfactory. Beim Starten meines Servers schlägt der Server mit der folgenden Fehlerursache fehl: Element [spring.cloud.gateway.routes[0].filters[0].modifyrequestbody.class] ist nicht gebunden. \n\nVorgang:\

Einführung RESTful APIs sind zu einem integralen Bestandteil moderner WEB-Anwendungen geworden. Sie bieten einen standardisierten Ansatz für die Erstellung und Nutzung von Webdiensten und verbessern so die Portabilität, Skalierbarkeit und Benutzerfreundlichkeit. Im Java-Ökosystem sind JAX-RS und springmvc die beiden beliebtesten Frameworks zum Erstellen von RESTful-APIs. In diesem Artikel werfen wir einen detaillierten Blick auf beide Frameworks und vergleichen ihre Funktionen, Vor- und Nachteile, um Ihnen eine fundierte Entscheidung zu erleichtern. JAX-RS: JAX-RSAPI JAX-RS (JavaAPI für RESTful Web Services) ist ein von JavaEE entwickeltes Standard-JAX-RSAPI für die Entwicklung von REST

Eine eingehende Analyse der Architektur und Arbeitsprinzipien des Spring-Frameworks Einführung: Spring ist eines der beliebtesten Open-Source-Frameworks im Java-Ökosystem. Es bietet nicht nur leistungsstarke Funktionen für die Containerverwaltung und Abhängigkeitsinjektion viele weitere Funktionen, wie z. B. Transaktionen, AOP, Datenzugriff usw. Dieser Artikel bietet eine detaillierte Analyse der Architektur und Arbeitsprinzipien des Spring-Frameworks und erläutert verwandte Konzepte anhand spezifischer Codebeispiele. 1. Kernkonzepte des Spring-Frameworks 1.1IoC (Inversion of Control) Kern von Spring

Optimieren der Programmprotokollierung: Tipps zum Festlegen der log4j-Protokollebenen Zusammenfassung: Die Programmprotokollierung spielt eine Schlüsselrolle bei der Fehlerbehebung, Leistungsoptimierung und Systemüberwachung. In diesem Artikel werden Tipps zum Festlegen von log4j-Protokollebenen gegeben, einschließlich der Festlegung verschiedener Protokollebenen und der Veranschaulichung des Einstellungsprozesses anhand von Codebeispielen. Einleitung: In der Softwareentwicklung ist die Protokollierung eine sehr wichtige Aufgabe. Durch die Aufzeichnung wichtiger Informationen während der Ausführung des Programms kann es Entwicklern dabei helfen, die Ursache des Problems herauszufinden und Leistungsoptimierungen und Systemüberwachungen durchzuführen.

Detaillierte Erläuterung der Oracle-Datenbankverbindungsmethoden In der Anwendungsentwicklung ist die Datenbankverbindung eine sehr wichtige Verbindung, die die Dateninteraktion zwischen der Anwendung und der Datenbank überträgt. Oracle-Datenbank ist ein relationales Datenbankverwaltungssystem mit leistungsstarken Funktionen und stabiler Leistung. In der tatsächlichen Entwicklung müssen wir verschiedene Verbindungsmethoden beherrschen, um mit der Oracle-Datenbank zu interagieren. In diesem Artikel werden mehrere gängige Verbindungsmethoden der Oracle-Datenbank im Detail vorgestellt und entsprechende Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis und eine bessere Anwendung zu erleichtern

Der Java-Reflektionsmechanismus wird im Spring-Framework häufig für die folgenden Aspekte verwendet: Abhängigkeitsinjektion: Instanziieren von Beans und Einfügen von Abhängigkeiten durch Reflektion. Typkonvertierung: Anforderungsparameter in Methodenparametertypen konvertieren. Persistenz-Framework-Integration: Zuordnung von Entitätsklassen und Datenbanktabellen. AspectJ-Unterstützung: Methodenaufrufe abfangen und Codeverhalten verbessern. Dynamischer Proxy: Erstellen Sie Proxy-Objekte, um das Verhalten des Originalobjekts zu verbessern.

Vorteile der Integration von JavaJNDI mit Spring Die Integration von JavaJNDI mit dem Spring-Framework hat viele Vorteile, darunter: Vereinfachung der Verwendung von JNDI: Spring bietet eine Abstraktionsschicht, die die Verwendung von JNDI vereinfacht, ohne komplexen JNDI-Code schreiben zu müssen. Zentralisierte Verwaltung von JNDI-Ressourcen: Spring kann JNDI-Ressourcen zentral verwalten, um die Suche und Verwaltung zu erleichtern. Unterstützt mehrere JNDI-Implementierungen: Spring unterstützt mehrere JNDI-Implementierungen, einschließlich JNDI, JNP, RMI usw. Nahtlose Integration des Spring-Frameworks: Spring ist sehr eng in JNDI integriert und lässt sich nahtlos in das Spring-Framework integrieren. So integrieren Sie JavaJNDI mit dem Spring-Framework, um Ja zu integrieren