[FIXED] Das Feld “” in “” erforderte eine Bean vom Typ “”, die nicht gefunden werden konnte

Ausgabe

Ich kämpfe mich durch ein Spring Web API-Tutorial mit STS4.

Ich bin im Tutorial zu dem Zustand gekommen, in dem ich es testen muss, aber ich habe nur ein “nicht gefunden”, also scheint das Routing nicht zu funktionieren.

Ich habe Online-Kommentare gesehen, die darauf hinzudeuten scheinen, dass ich @ComponentScan("com.example")die main()Funktion ergänzen muss, was im Tutorial nicht erwähnt wird.

Also habe ich das gemacht, aber jetzt bekomme ich Folgendes.

***************************
APPLICATION FAILED TO START
***************************

Description:

Field pollRepository in com.example.controller.PollController required a bean of type 'com.example.repository.PollRepository' that could not be found.

The injection point has the following annotations:
    - @javax.inject.Inject()


Action:

Consider defining a bean of type 'com.example.repository.PollRepository' in your configuration.

Mein Projekt sieht so aus:

Geben Sie hier die Bildbeschreibung ein

Die mainMethode (in QuickPollApplication.java):

package com.example.rest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan("com.example")
@SpringBootApplication
public class QuickPollApplication {

    public static void main(String[] args) {
        SpringApplication.run(QuickPollApplication.class, args);
    }

}

und PollController.javasieht so aus:

package com.example.controller;

import javax.inject.Inject;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.domain.Poll;
import com.example.repository.PollRepository;

@RestController
public class PollController {

    @Inject
    private PollRepository pollRepository;
    
    @GetMapping("/polls")
    public ResponseEntity<Iterable<Poll>> getAllPolls() {
        Iterable<Poll> allPolls = pollRepository.findAll();
        return new ResponseEntity<>(allPolls, HttpStatus.OK);
    }
}

und das ist PollRepository.java:

package com.example.repository;

import org.springframework.data.repository.CrudRepository;
import com.example.domain.Poll;


public interface PollRepository extends CrudRepository<Poll, Long> {

}

Lassen Sie mich wissen, ob es hilfreich wäre, etwas anderes zu zeigen!

Gemäß einem Vorschlag habe ich versucht @EnableJpaRepositories(basePackages="com.example"), die QuickPollApplication-Klasse hinzuzufügen, aber dies führte nur zu mehr Fehlern, beginnend mit:

Error creating bean with name ‘pollController’: Unsatisfied dependency
expressed through field ‘pollRepository’; nested exception is
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name ‘pollRepository’ defined in
com.example.repository.PollRepository defined in
@EnableJpaRepositories declared on QuickPollApplication: Invocation of
init method failed; nested exception is
java.lang.IllegalArgumentException: Not a managed type: class
com.example.domain.Poll

Solution

Can you move application main class to com.example package instead?

If not,
You can try adding
@EnableJpaRepositories(basePackages="com.example") to QuickPollApplication class.

Also you require additional config like @EntityScan with base packages configured.

Explaination:

Standardmäßig aktiviert Spring Boot die JPA-Repository-Unterstützung und sucht im Paket (und seinen Unterpaketen), wo sich @SpringBootApplication befindet. Wenn Ihre Konfiguration JPA-Repository-Schnittstellendefinitionen enthält, die sich in einem nicht sichtbaren Paket befinden, können Sie auf alternative Pakete hinweisen, indem Sie @EnableJpaRepositories und den typsicheren Parameter basePackageClasses=MyRepository.class verwenden.

Ref:
https://spring.io/guides/gs/accessing-data-jpa/


Beantwortet von –
swapyonubuntu


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like