Skip to content

AutoTable启动顺序/时机

需求

系统启动的时候,有初始化相关的操作(比如某些同学喜欢在@PostConstruct写一些操作数据库的初始化逻辑),因为AutoTable是通过实现spring的CommandLineRunner接口启动的,所以AutoTable的执行顺序晚于业务逻辑的执行顺序,进而导致AutoTable没有来得及改表,逻辑就先执行了,然后报错了。

方案

改变业务逻辑的触发时机

  1. 监听spring的ApplicationReadyEvent事件。
  2. 实现ApplicationRunner接口或者CommandLineRunner接口,然后接口指定@Order(值小于Ordered.LOWEST_PRECEDENCE即可)。
  3. 实现AutoTableFinishCallback接口,在AutoTable执行完之后,执行回调逻辑。

改变AutoTable的执行时机

  1. 不使用spring boot的快速集成方案@EnableAutoTable,改为手动触发AutoTable的执行逻辑,参考快速上手 - 普通java应用