首页 > 解决方案 > 从另一个类调用时,spring boot autowire 不起作用

问题描述

我有一个弹簧启动应用程序,因为我的 @Autowire 在某些情况下无法正常工作。

@RestController
public class Check {

@Autowired
SettlementFinanceRepo sfr;

@RequestMapping("/api/checker")
public String checkSettlementFinance(String id) {
    SettlementFinanceEntity sfe=new SettlementFinanceEntity();
    String status="success";
    try {
        sfe.setTransaction_id(id);
        sfr.save(sfe);
    }catch(Exception e) {
        e.printStackTrace();
        status=e.getMessage();
    }
    return status;
}
}

上面的代码工作得很好,当我以 REST 方式调用它时 http://localhost:8080/api/checker?id=99999 我的自动装配仓库可以将它保存到数据库中。

但是,当我从另一个 @RestController 类调用此方法时,@Autowired SettlementFinanceRepo sfr 变为空

例子:

@RestController
public class SomeRestClass{

Check c=new Check();

public void letsSave(){
c.checkSettlementFinance("99999");
}

}

在这种情况下,我来自 Check 类的@Autowired SettlementFinanceRepo sfr 为空,有人可以解释我在这里缺少什么...

谢谢!

标签: javaspring-bootautowired

解决方案


您正在从另一个restcontroller 类调用restcontroller 类。这可能会导致问题,您应该使用服务并从控制器调用服务类。

您还可以通过遵循 DAO 来分离逻辑,您可以在此处找到有关 DAO 的更多信息:https ://www.baeldung.com/jsf-spring-boot-controller-service-dao

如果这没有帮助,请发表评论,我们可以讨论并找到解决方案。


推荐阅读