java - 从另一个类调用时,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 为空,有人可以解释我在这里缺少什么...
谢谢!
解决方案
您正在从另一个restcontroller 类调用restcontroller 类。这可能会导致问题,您应该使用服务并从控制器调用服务类。
您还可以通过遵循 DAO 来分离逻辑,您可以在此处找到有关 DAO 的更多信息:https ://www.baeldung.com/jsf-spring-boot-controller-service-dao
如果这没有帮助,请发表评论,我们可以讨论并找到解决方案。
推荐阅读
- c# - 在 FCM 推送通知 System.NullReferenceException:对象引用未设置为对象的实例。
- azure-active-directory - 如何在没有 AdalJS 的情况下检索访问令牌?
- javascript - 如何在 HTML 文件中配置 Jest 以进行集成测试?
- istio - Istio VirtualService HTTP 标头匹配问题
- javascript - Cesium Earth:在 ECI 坐标系中显示卫星
- r - 从列中提取日期并对它们进行排序
- shell - 如何在 Flow Shell 中传递构造函数值?
- javascript - 内表中的最后一行不会在固定数据表中展开
- javascript - click 事件未在动态生成的元素上触发
- javascript - 查找多个输入框的值