springboot controller层autowire service层时为null空指针异常的错误

今天写一个新接口后照往常一样访问,结果报了个空指针异常,没仔细看,以为是sql查不到结果,结果navicat查了一遍发现结果是有的,于是怀疑service没注入成功。debug一下发现所有的service都为空,感觉不合理,检查到最后发现居然是因为controller的方法写成了private方法!低级错误,简直可怕。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在SpringMVC框架,我们通常使用@Autowired注解来注入Service或Mapper接口。在controller注入service接口,在service注入其他的service接口或mapper接口是可以的。然而,在我们自定义的非controllerservice直接使用@Autowired注解进行注入是不可能的,会导致空指针异常。 解决这个问题的方法是,我们可以使用下面的方式来实现注入。首先,在我们自定义的类声明一个@Autowired注解的成员变量,然后通过构造方法或setter方法来对该成员变量进行赋值。这样,在使用该类时,Spring会自动将依赖的实例注入进来,避免了空指针异常的发生。具体实现步骤和相关使用技巧可以参考Spring实战之@Autowire注解的文章。 举个例子,假设我们有一个非controllerservice类叫做UserInfoService,在该类需要注入一个IUserInfoService接口的实例。我们可以在UserInfoService声明如下成员变量并加上@Autowired注解: @Autowired private IUserInfoService userInfoService; 然后,在UserInfoService类的构造方法或setter方法对该成员变量进行赋值: public UserInfoService(IUserInfoService userInfoService) { this.userInfoService = userInfoService; } 或者 @Autowired public void setUserInfoService(IUserInfoService userInfoService) { this.userInfoService = userInfoService; } 这样,在使用UserInfoService类时,IUserInfoService接口的实例就会被自动注入进来,避免了空指针异常的发生。如果你仍然遇到service加了@Autowire注解后报空指针异常的问题,请检查是否正确声明了@Autowired注解的成员变量并是否正确进行了赋值。如果仍然无法解决问题,可以参考引用的解决办法,可能会帮助你解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值