2017-12-07 2 views
0

Ich bin neu bei Springboot und ich lerne von Spings Tutorials und Anleitungen zu "https://spring.io/guides".So beheben Sie den Fehler "Benötigte a Bean"

Im Moment versuche ich, das Tutorial zu verstehen und wiederholen: "Accessing data with MySQL"

Unfortunatelly habe ich den Fehler bei der Mavenbuild:

Fehler beim Starten des Application. Um den Autokonfigurationsbericht anzuzeigen, führen Sie Ihre Anwendung erneut mit aktiviertem Debug aus. 2017.12.07 10: 26: 42,708 ERROR 8100 --- [main] osbdLoggingFailureAnalysisReporter:


KLAGE UNTERLEGEN


Beschreibung Start:

Feld goodRepository in xxx .controller.GoodController benötigte eine Bean vom Typ 'xxx.repositories.GoodRepository', die nicht gefunden werden konnte.

Aktion:

Betrachten Sie eine Bohne vom Typ definieren 'xxx.repositories.GoodRepository' in Ihrer Konfiguration.

Prozess beendet mit Exit-Code 1

Hier ist mein Code:

Good.java:

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

import lombok.Data; 

@Entity 
@Data 
public class Good { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer id; 

    private String name; 

    public Good() { 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

GoodRepository:

import org.springframework.data.repository.CrudRepository; 

import xxx.model.Good; 

public interface GoodRepository extends CrudRepository<Good, Long> 
{ 

} 

GoodController:

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.ResponseBody; 

import xxx.model.Good; 
import xxx.repositories.GoodRepository; 

@Controller 
@RequestMapping(path="/goods") 
public class GoodController { 

    @Autowired 
    private GoodRepository goodRepository; 

    @GetMapping(path="/add") 
    public @ResponseBody String addNewGod(@RequestParam String name) 
    { 
     Good god= new Good(); 
     god.setName(name); 
     goodRepository.save(god); 
     return "Saved"; 
    } 

    @GetMapping(path="/all") 
    public @ResponseBody Iterable<Good> getAllGods() 
    { 
     return goodRepository.findAll(); 
    } 

} 

Mein application.properties:

spring.jpa.hibernate.ddl-auto=update 
spring.datasource.url=jdbc:mysql://localhost:3306/gccontest 
spring.datasource.username=xxx 
spring.datasource.password=xxx 

die mysql-db existiert auf diesem Port ...

Was habe ich, wo falsch?

+0

Haben Sie Ihre Datenbank eingerichtet? –

+0

Ja, ähnlich wie im Tutorial. Die Frage ist aktualisiert .. – Tagamoga

+0

Versuchen Sie, Ihr Repository mit '@ Repository' zu kommentieren. –

Antwort

0

Sie müssen Ihr GoodRepository mit @Repository kommentieren. Siehe Antwort von: Spring Boot Inject CrudRepository into Service

@Repository 
public interface GoodRepository extends CrudRepository<Good, Long>{ 

} 
+0

Leider der gleiche Fehler. Ist es möglich, dass sie nicht gefunden werden, weil sie sich in verschiedenen Paketen befinden? "import xxx.model.Good; import xxx.repositories.GoodRepository;" – Tagamoga

0

Mark Ihrer GoodRepository Implementierungsklasse als @ service/@ Komponente und hat einen Versuch

+0

Leider der gleiche Fehler. Ist es möglich, dass sie nicht gefunden werden, weil sie sich in verschiedenen Paketen befinden? "import xxx.model.Good; import xxx.repositories.GoodRepository;" – Tagamoga

0

ich habe es gefunden !!! ;-)

Ich habe meine Application.java bearbeiten:

package xxx; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 

@SpringBootApplication 
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class,WebMvcAutoConfiguration.class }) 
@ComponentScan({ "xxx.repositories"}) 
public class Application 
{ 
    public static void main(String[] args) 
    { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Ich habe meine Funktionalität noch nicht überprüft, aber es kompiliert und ist Tagrunnig! Vielen Dank für Ihre Tipps !!!

Verwandte Themen