ignite服务中的bean注入为空
在写ignite服务的时候,通常服务配置在启动文件中:
<bean class="org.apache.ignite.services.ServiceConfiguration"> <property name="name" value="***Impl" /> <property name="maxPerNodeCount" value="1" /> <property name="totalCount" value="1" /> <property name="service"> <ref bean="CronServiceImpl" /> </property> </bean> <bean id="CronServiceImpl" class="com.***Impl"></bean>
实现类中注入的类
@Autowired private CtsMgr ctsMgr;
按照spring习惯我们注入接口通常选择@Autowired或者@Resource,ignite也是兼容spring的.但是当服务的部署发生在启动之后,也就是服务没有配置在配置文件中时:
ServiceConfiguration cfg = new ServiceConfiguration(); cfg.setTotalCount(4); cfg.setMaxPerNodeCount(2); cfg.setName("***Impl"); cfg.setService(new ***Impl()); Ignition.ignite().services().deploy(cfg);
这时候再调用服务会发现,ctsMgr为null,这里需要用到ignite的注解,将接口注入替换为:
@SpringResource(resourceName = "ctsMgr") private transient CtsMgr ctsMgr;
可以发现代码又可以正常运行了哟