java - 未使用 Spring 从 Rest Controller 调用实现方法

标签 java spring spring-restcontroller

我正在尝试从我的 Controller 类调用实现方法。我已经用 @Component 注释了该接口(interface),并在 Controller 中自动连接了该接口(interface)。但是,它抛出了 404 异常。

另一方面,我创建了一个简单的 DAO 并用 @Component 进行注释,这是在我的 Controller 上工作的。

我的问题是我想接下来调用一个接口(interface)方法,该方法又会调用 DAO。

这是我的流程。

@RestController
public class PurchaseController {

/*@Autowired
private DpDAO dpDAO;*/  ----> This is working
@Autowired
private PurchaseService purchaseService; --> This is not working

@GetMapping("/purchase/{partyId}/{dealId}")
public String createPurchase(@PathVariable("partyId") String partyId, @PathVariable("transactionId") String transactionId) {
    return purchaseService.createPurchase(partyId, transactionId); --> This is not working
    //return dpDAO.createPurchase(partyId, transactionId); --> This is working
}
}

我的界面

@Component
public interface PurchaseService {
    public String createPurchase(String partyId, String transactionId);
}

DpDAO 类

@Component
public class DpDAO  {

public String createPurchase(String partyId, String dealId) {
    // Able to get logs here
    return null;
}

}

我们不能对接口(interface)进行注释吗?任何想法将不胜感激。

最佳答案

我怀疑问题在于 PurchaseService 是一个接口(interface),而 DpDAO 是一个类。也就是说,您有后者的实例,但没有前者的实例。

如果这是真的,那么 Spring 找不到要注入(inject)的 bean。因此,您需要某种方法来创建要注入(inject)的 PurchaseService 实例。

您可以这样创建一个实例:

@Component
class PurchaseServiceImpl implements PurchaseService
{
     // Fill in
}

或者您的初始化器类之一有一个工厂方法。像这样的东西:

@Bean
public PurchaseService createService()
{
     return new PurchaseServiceImpl();
}

关于java - 未使用 Spring 从 Rest Controller 调用实现方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46088690/

相关文章:

java - Dockerize Java Cucumber

java - Spring Pageable 多列排序 + AWS API Gateway

spring-boot - MockMvc 测试对于 get 请求始终返回状态代码 200

java - 如何使用 Hibernate Validator 动态解析消息参数?

java - 如何使用 Spring Data Jpa OneToMany 嵌套模型对 Spring Boot Restful API 进行 CURD 操作?

java - 在 Spring Boot Rest 中将 GET 请求参数与 DTO 对象映射时出现问题

Java 字符串中的数组名称

java - 数组中最大重复字符串

java - Spring中从xml转换为json时如何更改内容?

mysql - 删除并插入而不是更新