首页 > 解决方案 > Spring `@Autowire` 字段为 `null`,尽管它在其他类中工作正常

问题描述

Spring@Autowire字段null即使在其他类中也能正常工作。

public class SendRunner implements Runnable {

private String senderAddress;
@Autowired
private SubscriberService subscriberService;

    public SendRunner(String senderAddress) {
    this.senderAddress = senderAddress;
}

@Override
public void run() {
    sendRequest();
}

  private void sendRequest() {
    try {
        HashMap<String, String> dataMap = new HashMap<>();
        dataMap.put("subscriberId", senderAddress);
         HttpEntity<?> entity = new HttpEntity<Object>(dataMap, httpHeaders);
         Subscriber subscriber = subscriberService.getSubscriberByMsisdn(senderAddress);
        } catch (Exception e) {
          logger.error("Error occurred while trying to send api request", e);
    }
}

此外,此类在调度程序 servlet 中作为 bean 进行管理:

    <bean id="SendRunner" class="sms.dating.messenger.connector.SendRunner">
    </bean>

在这里,我得到一个空指针异常subscriberService。可能的原因是什么?提前致谢。

标签: springspring-mvcautowirednull-pointer

解决方案


你能试试下面的代码片段吗

@Configuration
                public class Someclass{

                     @Autowired
                     private SubscriberService subscriberService;

                     Thread subscriberThread = new Thread() {
                                @Override
                                public void run() {
                                  try {
                        HashMap<String, String> dataMap = new HashMap<>();
                        dataMap.put("subscriberId", senderAddress);
                         HttpEntity<?> entity = new HttpEntity<Object>(dataMap, httpHeaders);
                         Subscriber subscriber = subscriberService.getSubscriberByMsisdn(senderAddress);
                        } catch (Exception e) {
                          logger.error("Error occurred while trying to send api request", e);
                    }

                                }
                            };

                }

推荐阅读