我正在尝试从我的 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/