0
请考虑Tapestry
项目中的AppModule
。挂毯:使用@Startup和@Order注释的启动顺序
我想订购必须在系统启动时调用的动作序列。
考虑,我有两个简单的动作:
1)动作,必须先走:
@Startup
public static void initMyApplication(Logger logger, LiquibaseService liquibaseService) {
logger.info("Updating database by liquibase service...");
liquibaseService.update();
logger.info("update-db done.");
}
2),第二个:
@Startup
@Order("after:LiquibaseService")
public static void doSomeChecks(HibernateSessionManager hsm) {
...
}
我无法理解(甚至在阅读文档后):如何使用@Order
注释来指定这些操作的顺序?
更具体地说:我需要指出什么@Order("after:<HERE>)
?
看来,这就像建筑:
@Order("after:LiquibaseService")
或
@Order("after:initMyApplication")
不起作用。其实我的startup
行动是以任意顺序调用的。
是的我知道'contributeRegistryStartup'方法。但我不明白,我怎么能注入那些匿名的'Runnable'对象所需的服务实例,就像我对我的方法'initMyApplication'(我的意思是服务'LiquibaseService'的实例,虽然它只是一个例子)。如果你可以给我这样的例子,它会+1和检查:) – Andremoniy
我已经回答了这个[这里](http://stackoverflow.com/a/14380863/570692) – Tawus
是的,它实际上工作,我检查它。谢谢,这是一个有趣的决定。 – Andremoniy