VMBox 开机不能跑 Vagrant脚本
项目正常使用了一小段时间,然后重启电脑。按照以往的习惯,既然 vagrant 配置好了,就使用 box 开虚拟机。然而,不使用 vagrant up 的命令启动方式开启虚拟机, 他不会跑脚本!!!因为 vmbox 才不会管你 vagrant 的事情呢。
1.应用启动 redis 不能使用却无任何报错
- 在知道这个之前,项目稍微调整了下。但换汤不换药的调整不应出现问题,重点在于现在一直跑都不会报 redis 连接失败的异常!
所以一直没去怀疑 redis 服务出了问题,并且 redis set 和 get 竟然都没报异常!
2.当appContext为null为完成依赖注入时被调用
- 于是,调整服务在项目启动后的执行时期,又出现了 SpringContextUtil 的 appContext 依赖注入未完成就被调用了。
然后就是 使用了 各种 @Lazy(false) @ConditionalOnBean("") @PostConstruct 去解决但没用。
最后尝试了把 SpringContextUtil 从 jar 包里拿到 启动类同级目录,仅仅解决了当前问题。
3.调整服务执行时期
- 依赖注入 是在 bean注入 之后,所以只要让 服务 在 依赖注入 之后执行就可以了,所以使用 实现ApplicationRunner的run方法 解决。
- 于是项目正常启动,控制台日志却依然平静。只好用 RedisPlus 测下连接,好家伙,真的不能用。就猜到了这个问题,测到了这个问题。
- 项目正常运行后, SpringContextUtil 是 util工程的 jar 包,必然要原样地还回去。