当前位置: 首页 > 知识库问答 >
问题:

“”中构造函数的参数0需要一个类型为“”的bean,但找不到

翟新
2023-03-14

我正在创建一个Spring Boot应用程序,其中任何客户端都可以提交请求,这些请求可以是getputpostdelete

但是在创建这个应用程序时,我遇到了以下错误:

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

Description:

Parameter 0 of constructor in com.idr.springboot.service.PersonService required a bean of type 'com.idr.springboot.dao.PersonDao' that could not be found.

The following candidates were found but could not be injected:
    - User-defined bean


Action:

Consider revisiting the entries above or defining a bean of type 'com.idr.springboot.dao.PersonDao' in your configuration.

我的应用程序的结构是:

package com.idr.springboot.dao;

import com.idr.springboot.model.Person;
import java.util.UUID;


public interface PersonDao {

    int insertPerson(UUID id, Person person);

    default int insertPerson(Person person) {
        UUID id = UUID.randomUUID();
        return insertPerson(id, person);
    }


}
package com.idr.springboot.service;

import com.idr.springboot.dao.PersonDao;
import com.idr.springboot.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class PersonService {


    private final PersonDao personDao;

    @Autowired
    public PersonService(@Qualifier("fake demo") PersonDao personDao) {
        this.personDao = personDao;
    }


    public int addPerson(Person person) {
        return personDao.insertPerson(person);
    }
}
Parameter 0 of constructor in com.idr.springboot.service.PersonService required a bean of type 'com.idr.springboot.dao.PersonDao' that could not be found.

我尝试用@service@repository@component注释Persondao.java,但仍然得到相同的错误。

我甚至从这些答案中尝试了解决方案:

(1)构造函数的参数0需要一个类型为'java.lang.String'的bean,但找不到该bean

但我仍然无法解决我的问题。

共有1个答案

沙岳
2023-03-14

通过将限定符@qualifier(“fake demo”)添加到Public PersonService(@qualifier(“fake demo”)PersonDao PersonDao)中,将搜索一个具有该限定符的bean以将其注入到不存在的PersonService中。您也可以在PersonDAO上声明此限定符,也可以删除它。我建议把它移除。此外,您应该使用@repository注释PersonDAO并扩展接口org.springframework.data.repository.repository

 类似资料: