AutoTable启动顺序/时机
需求
系统启动的时候,有初始化相关的操作(比如某些同学喜欢在@PostConstruct写一些操作数据库的初始化逻辑),因为AutoTable是通过实现spring的CommandLineRunner接口启动的,所以AutoTable的执行顺序晚于业务逻辑的执行顺序,进而导致AutoTable没有来得及改表,逻辑就先执行了,然后报错了。
方案
改变业务逻辑的触发时机
- 监听spring的ApplicationReadyEvent事件。
- 实现ApplicationRunner接口或者CommandLineRunner接口,然后接口指定@Order(值小于Ordered.LOWEST_PRECEDENCE即可)。
- 实现AutoTableFinishCallback接口,在AutoTable执行完之后,执行回调逻辑。
改变AutoTable的执行时机
- 不使用spring boot的快速集成方案@EnableAutoTable,改为手动触发AutoTable的执行逻辑,参考快速上手 - 普通java应用