簡體   English   中英

沒有類型為AbstractRepository的合格bean <?> &#39;可用:預期匹配的單個bean,但找到2

[英]No qualifying bean of type AbstractRepository<?>' available: expected single matching bean but found 2

我正在使用spring-boot來實現一些其他端點。 我實現了一個AbstractRepository和一個AbstractEnpoint,它是@Autowired。 然后將兩者都擴展為真正的2個端點:ClientEndpoint和HospitalReservationListEndpoint。 但是,當我嘗試在需要存儲庫的端點中調用方法時,在瀏覽器中出現以下錯誤:

"org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.parcaune.reservationmanagerservices.core.AbstractRepository<?>' available: expected single matching bean but found 2: clientRepository,hospitalReservationListRepository"

我的課程:

我的抽象資料庫

/*
@NoRepositoryBean
Annotation to exclude repository interfaces from being picked up
and thus in consequence getting an instance being created
*/

@NoRepositoryBean
public interface AbstractRepository<T> extends JpaRepository<T, String> 
{
}

我的摘要終點

public abstract class AbstractEndpoint<T> {

  @Autowired
  protected AbstractRepository<T> repository;

  @GET
  @Path("/ping")
  @Produces(MediaType.TEXT_PLAIN)
  public String ping() {
    return "Endpoint works!";
  }

  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public List<T> getAll() {
    List<T> list = new ArrayList<>();
    list = repository.findAll();
    return list;
  }
}

我的客戶班:

public interface ClientRepository extends AbstractRepository<Client> {
}

@Component
@Path("/clients")
public class ClientEndpoint extends AbstractEndpoint<Client> {
}

我的醫院班

public interface HospitalReservationListRepository extends 
AbstractRepository<HospitalReservationList> {
}

@Component
@Path("/hospitalreservationlist")
public class HospitalReservationListEndpoint extends 
AbstractEndpoint<HospitalReservationList> {
}

一種簡單的方法是將存儲庫添加為通用參數,如下所示:

public abstract class AbstractEndpoint<T,R extends AbstractRepository<T>> {

  @Autowired
  protected R repository;

...

我希望有一種更好的方法,如果可以找到一個,請在這里評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM