问题似乎
SensorReadingService是被自动连接到的类不是Spring管理的类。为了使自动装配工作,需要接线的类需要由Spring管理其生命周期(这意味着您需要在Spring
Java Config的Spring XML中为该类提供一个条目)
您可以这样重构代码:
1)添加另一个构造函数参数,
RealTimeThread该参数将为type
SensorReadingService。
2)创建一个
RealTimeThreadFactory像这样的类:
public class RealTimeThreadFactory { private final SensorReadingService sensorReadingService; public RealTimeThreadFactory(SensorReadingService sensorReadingService) { this.sensorReadingService = sensorReadingService; } public RealTimeThread getObject(BufferedReader input, Map<String, String> rt, double[] offset, double[] sens) { return new RealTimeThread(input, rt, offset, sens, sensorReadingService); }}3)在组件扫描中包含的包下的某个位置添加Java Config类
@Configurationpublic class RealTimeThreadConfig { @Autowired private SensorReadingService sensorReadingService; @Bean public RealTimeThreadFactory realTimeThreadFactory() { RealTimeThreadFactory realTimeThreadFactory = new RealTimeThreadFactory(sensorReadingService); return realTimeThreadFactory; }}4)当前代码创建的类
RealTimeThread现在必须是Spring
bean(使用您喜欢的任何方式)并被注入
RealTimeThreadFactory。为了创建RealTimeThread对象,只需在工厂中使用适当的参数简单地调用getObject()方法即可。



