Spring boot plugin framework 插件不自动生成bean报错
文档地址
https://gitee.com/starblues/springboot-plugin-framework-parent/wikis/pages
报错:
最近在使用上述spring boot 插件式开发软件时,做好新功能插件时,报出不能创建bean的错误:
10:35:58.621 [main] WARN c.g.s.f.SpringBeanRegister - [register,71] - Error creating bean with name 'dataUploadTask@Timed-task-plugin': Unsatisfied dependency expressed through field 'hotelPluginService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mybatis.plugin1.service.HotelPluginCallService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
错误原因:
在开发这个插件的时候,这个插件里有来自其他插件的数据,按照文档的要求,在本插件中创建了结构做Caller接收数据
@Caller("hotelPluginService")
public interface HotelPluginCallService {
@Caller.Method("userOffline")
public List<UserOffline> selectUserOfflineList(UserOffline userOffline);
@Caller.Method("userOnline")
public List<UserOnline> selectUserOnlineList(UserOnline userOnline);
}
在数据来源的插件中创建类做Supplier发送数据
@Supplier("hotelPluginService")
public class HotelPluginService {
@Autowired
IUserOfflineService userOfflineService;
@Autowired
IUserOnlineService userOnlineService;
@Supplier.Method("userOffline")
public List<UserOffline> selectUserOfflineList(UserOffline userOffline){
return userOfflineService.selectUserOfflineList(userOffline);
}
@Supplier.Method("userOnline")
public List<UserOnline> selectUserOnlineList(UserOnline userOnline) { return userOnlineService.selectUserOnlineList(userOnline); }
}
在本插件中通过caller接口获取数据
@Autowired
HotelPluginCallService hotelPluginService;
根据报错,后来我发现实际上这个插件已经成功加载bean,可仍然报错,我去掉了@Autowired标签后,这个报错就消失了,可是后来发现没有标签后虽然不报创建bean失败,但是数据获取不到。
处理方法
忽略创建bean失败的报错,虽然他在报bean创建失败,但是在后来测试中发现,插件已经成功创建bean了,而且带着@Autowired标签数据才能正常传输,该报错不影响正常功能。