spring - 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
。可能的原因是什么?提前致谢。
解决方案
你能试试下面的代码片段吗
@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);
}
}
};
}
推荐阅读
- flutter - 在flutter_treeview中如何改变选定节点的颜色
- jquery - 引导模式弹出窗口的按钮不调用动作控制器
- python - 从范围创建 csv 列以生成 lat 和 lng
- java - 获取寻址多项式以将该矩阵存储在一维数组中
- android-studio - 我正在尝试从评级中获取数字并将它们相加以计算平均值,但它会单独打印详细信息
- c# - Pun2 未在 WebGL 中连接
- c# - Unity + Firebase:SetValueAsync 正在停止主线程,似乎是同步的
- python - 当包含在列中时,季度日期系列变为 NaT
- excel - Excel:根据低于另一列匹配条件的值计算单元格
- visual-studio-code - 远程开发容器离线扩展