Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.springframework.beans.factory.unsatifiedPendencyException,没有[edu.sample.service.ItemService]类型的合格bean_Java_Spring_Spring Boot - Fatal编程技术网

Java org.springframework.beans.factory.unsatifiedPendencyException,没有[edu.sample.service.ItemService]类型的合格bean

Java org.springframework.beans.factory.unsatifiedPendencyException,没有[edu.sample.service.ItemService]类型的合格bean,java,spring,spring-boot,Java,Spring,Spring Boot,它是spring引导应用程序。我遇到以下异常。如何解决它请帮助我 我的控制器类是 import edu.sample.model.Item; import edu.sample.service.ItemService; @ComponentScan(basePackages = "edu.*") @RestController public class ItemController { @Autowired @Qualifier(value="itemService")

它是spring引导应用程序。我遇到以下异常。如何解决它请帮助我 我的控制器类是

import edu.sample.model.Item;
import edu.sample.service.ItemService;

@ComponentScan(basePackages = "edu.*")
@RestController
public class ItemController {

    @Autowired
    @Qualifier(value="itemService")
    private ItemService itemService;

    @RequestMapping(value = "/getAllItems", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<List<Item>> getAllItems() {
        List<Item> items = itemService.getAllItems();
        return new ResponseEntity<List<Item>>(items, HttpStatus.OK);
    }
}

您必须使用限定符“itemService”命名为
ItemServiceImpl
,如下所示:

@Service("itemService")
public class ItemServiceImpl implements ItemService {
    ...

您必须使用限定符“itemService”命名为
ItemServiceImpl
,如下所示:

@Service("itemService")
public class ItemServiceImpl implements ItemService {
    ...

默认情况下,Springbean的名称取自类名称,如
itemServiceImpl
itemServiceImpl

@Service
public class ItemServiceImpl implements ItemService {
 /** ... */
}
通过下面的声明,您拥有一个名为
itemServiceImpl
ItemService
类型的bean

@Service
public class ItemServiceImpl implements ItemService {
 /** ... */
}
然而,由于您使用的是
@Qualifier(value=“itemService”)
,所以您试图根据bean的名称自动连接它
ItemController
需要一个名为
itemService
的bean,但是spring上下文没有该名称的bean,因此
未满足的pendencyException

@ComponentScan(basePackages = "edu.*")
@RestController
public class ItemController {

    @Autowired
    @Qualifier(value="itemService")
    private ItemService itemService;
    /* ... */
}
现在,为了解决您的问题,您可以给
ItemServiceImpl
bean一个明确的名称,如

@Service("itemService")
public class ItemServiceImpl implements ItemService {
 /** ... */
}

另一种方法是通过从
ItemController
中删除
@Qualifier
注释,让spring autowire
ItemService
按其类型而不是名称进行bean。除非spring上下文中有多个类型为
ItemService
的bean,否则这种方法工作良好且简单。

默认情况下,spring bean的名称取自类名称,如
itemServiceImpl
,用于
itemServiceImpl

@Service
public class ItemServiceImpl implements ItemService {
 /** ... */
}
通过下面的声明,您拥有一个名为
itemServiceImpl
ItemService
类型的bean

@Service
public class ItemServiceImpl implements ItemService {
 /** ... */
}
然而,由于您使用的是
@Qualifier(value=“itemService”)
,所以您试图根据bean的名称自动连接它
ItemController
需要一个名为
itemService
的bean,但是spring上下文没有该名称的bean,因此
未满足的pendencyException

@ComponentScan(basePackages = "edu.*")
@RestController
public class ItemController {

    @Autowired
    @Qualifier(value="itemService")
    private ItemService itemService;
    /* ... */
}
现在,为了解决您的问题,您可以给
ItemServiceImpl
bean一个明确的名称,如

@Service("itemService")
public class ItemServiceImpl implements ItemService {
 /** ... */
}

另一种方法是通过从
ItemController
中删除
@Qualifier
注释,让spring autowire
ItemService
按其类型而不是名称进行bean。除非在spring上下文中有多个类型为
ItemService
的bean,否则这种方法工作得很好,也很简单。

它工作得很好,谢谢