Wie autowire Frühling-Daten CrudRepository
Ein bisschen Details
Ich bin mit einigen problem, während der Ausführung den unten angegebenen code ein. Ich erhalte die folgende Ausnahme. Wenn ich versuche den sample code von [CrudRepository für Spring Data][1].
Ich haben eine Schnittstelle:
package com.joydeep.springboot;
import org.springframework.data.repository.CrudRepository;
import com.joydeep.springboot.vo.Message;
public interface Test1 extends CrudRepository<Message, String> { }
VO Klasse:
package com.joydeep.springboot.vo;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Message {
@Id
private String id;
private String text;
private String author;
private Date created;
public Message() {
super();
}
public Message(String id, String text, String author, Date created) {
super();
this.id = id;
this.text = text;
this.author = author;
this.created = created;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
}
Controller-Klasse:
package com.joydeep.springboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloCntrl {
@Autowired
Test1 test;
@RequestMapping("/hello")
public String sayHi(){
return "Hi";
}
}
Initialisierer der Klasse:
package com.joydeep.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CourseAPIStarter {
public static void main(String[] args) {
SpringApplication.run(CourseAPIStarter.class);
}
}
pom.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.springboot</groupId>
<artifactId>rest-course-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Rest service course API</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
Ausnahme ist aufgetreten, während die Initialisierung des Contextes - cancelling-refresh-Versuch:
org.springframework.Bohnen.factory.UnsatisfiedDependencyException: Fehler beim erstellen bean mit dem Namen 'helloCntrl': Unzufrieden Abhängigkeit ausgedrückt durch das Feld 'test'; verschachtelte Ausnahme ist org.springframework.Bohnen.factory.NoSuchBeanDefinitionException: Keine Qualifikation bean des Typs " com.joydeep.springboot.Test1' verfügbar: voraussichtlich mindestens 1 Bohne, die als qualifiziert autowire-candidate. Abhängigkeit Anmerkungen {@org.springframework.Bohnen.factory.Anmerkung.Autowired(required=true)}
Dem Beispiel, das ich mich beziehe, ist von diesem link.
https://spring.io/guides/gs/accessing-data-jpa/
- Bitte formatieren Sie den code properbly
- Der Fehler sagt, dass Sie nicht über eine Test1-Klasse in der Spring container.
- Einfach durch einen Blick auf Sie haben unerfüllte Abhängigkeiten. Überprüfen Sie Ihre pom.xml oder was auch immer build-tool Sie verwenden!
- Bitte formatieren Sie Ihren code in eine richtige Art und Weise und geben mehr details über das, was Sie tun...
- Mehr details , format ist jetzt ein bisschen besser .
- Ich habe verwendet, spring boot und maven zu konfigurieren, das Projekt.
- bitte helfen Sie uns schriftlich eine angemessene Frage. Wenn Sie frei sind, entnehmen Sie bitte diesem link zur nächsten Frage, die Sie veröffentlichen. stackoverflow.com/help/how-to-ask
- versuchen addiing @EnableJpaRepositories(basePackages = {"joydeep.com"}) in Test1
- Seltsamerweise 1.4.2.RELEASE ich bin nicht in der Lage zu finden, EnableJpaRepositories. Mit Spring boot ist es nicht so, dass EnableJpaRepository automatisch aktiviert wird.
- im import org.springframework.Daten.jpa.repository.config.EnableJpaRepositories;
- Eine weitere Sache, von der spec -> standardmäßig, Spring Boot wird es ermöglichen, JPA-repository-Unterstützung und suchen Sie in das Paket (und seine Unterpakete), wo SpringBootApplication liegt. Wenn Ihre Konfiguration JPA-repository interface-Definitionen befindet sich in einem Paket nicht sichtbar, Sie können Alternative Pakete mit EnableJpaRepositories und Ihre Art-sicher basePackageClasses=MyRepository.class parameter.
- Es scheint, dass der Import org.springframework.Daten.jpa.repository.config.EnableJpaRepositories fehlt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu setzen
@Repository
annotation aufTest1
. Diese 3-Anmerkung für IhreCourseAPIStarter
Klasse, auf der die Anwendung ausgeführt wird wie heißes Messer in butter.@ComponentScan
Scannen Ihre Objekte, und registrieren Sie Sie mit dem Frühling.@EnableJpaRepositories
alle Spring-JPA-repositories werden in Ihrer Anwendung verwendet.@EntityScan
: Wie Sie Hinzugefügt@Entity
annotation des Modells Klasse-Objekt, das Frühjahr wird davon ausgegangen, dass eine Tabelle existiert, die mit NamenMessage
. So registrieren diese Klasse mit Feder alsEntity
müssen Sie diese Anmerkung.@SpringBootApplication
annotation intern ermöglicht@EnableAutoConfiguration
,@ComponentScan
,@ConfigurationPropertiesScan
etc. Nun, wenn@EnableAutoConfiguration
enthalten ist Frühling Bindungen zu erraten, das Verhalten der Anwendung und fügt die gewünschte Konfiguration durch das Lesen der jar-Abhängigkeit, die Sie Hinzugefügt haben, und wenn es gründet einer beliebigen Datenquelle Hinzugefügt wird, die in dem Projekt wird es automatisch konfigurieren Sie diese Anmerkungen mit dem default-Wert. Das bedeutet, dass@SpringBootApplication
allein arbeiten und für diese Anmerkungen.Feder nicht finden können
Test1
Bohne, weil Sie vergessen haben zu kommentieren mit@Repository
. Sie können autowire nur Spring-verwaltete Klassen (Controller, Component-Repository, Service-ecc).Versuchen Sie es mit diesem: