springmvc webservice服务器端调用@Autowired出现空指针异常

困扰已久的问题,springmvc框架下开发出webservice服务端,wsdl生成都没有任何问题,但是在客户端调用时,不管是怎么调用,在服务端,@autowired注入并不起作用,每次mapper变量都是null,导致无法操作持久层。

解决办法:

1,在websrvice服务端,集成SpringBeanAutowiringSupport

2,在调用方法一开始,增加一个方法:

SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);


这样在debug的时候就会发现,第一次进入到服务端,mapper变量仍然为null,但是调用完support的方法之后,mapper再次被成功注入。这样就不会出现空指针异常了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SpringMVC框架中,我们通常使用@Autowired注解来注入Service或Mapper接口。在controller层中注入service接口,在service层中注入其他的service接口或mapper接口是可以的。然而,在我们自定义的非controller或service类中直接使用@Autowired注解进行注入是不可能的,会导致空指针异常。 解决这个问题的方法是,我们可以使用下面的方式来实现注入。首先,在我们自定义的类中声明一个@Autowired注解的成员变量,然后通过构造方法或setter方法来对该成员变量进行赋值。这样,在使用该类时,Spring会自动将依赖的实例注入进来,避免了空指针异常的发生。具体实现步骤和相关使用技巧可以参考Spring实战之@Autowire注解的文章。 举个例子,假设我们有一个非controller或service类叫做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>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值