【发布时间】:2019-07-13 02:17:59
【问题描述】:
我有一个项目正在进行,其中 kafka 消费者代码负责调用业务服务和方法。 在服务类具有自动装配服务之前,所有这些都可以正常工作。 这些自动装配因 NPE 而失败。
我了解在 Spring IOC 之外调用该服务不会启用自动装配。 是否有一个干净的解决方法,我的限制是我不能在业务服务端更改代码。 每个业务服务都是不同微服务的一部分。
这是从 kafka 消费者端调用方法的部分: 服务类和方法名称作为配置的一部分在运行时从 DB 中获取,并且可以更改或重新配置。 /如果重试并最终坚持失败dtls,则在try catch下调用服务/ 试试 {
Class<?> c = Class.forName(sdfServiceClass);
Method consumerMethod
= c.getDeclaredMethod(
sdfServiceMethod, Context.class, Object.class, String.class);
Context context_con = (Context) result[0];
consumerMethod.invoke(c.newInstance(), context_con, result[1], messageuid_con);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException |
InstantiationException | InvocationTargetException e) {
上面调用的业务服务:
公共类 serviceclassA {
@Autowired
private JobLocator jobLocator;
@Autowired
@Qualifier("sbjobLauncher")
private SimpleJobLauncher sbjobLauncher;
@Autowired
JobRepository jobRepository;
@Autowired
SbJobService sbJobService;
public void ServiceMethod(Context context, Object item, String messageUid) {
问题是这个类具有不是由 Spring IOC 启动的自动装配。
错误: java.lang.NullPointerException:空 在业务服务中调用自动装配类的位置
【问题讨论】: