Tapestry5
我想知道,在某些动作中描述是否有任何方便和适当的方式AppModule
,应该在方法运行之前调用? bind()
当然,可以bind()
在方法块顶部的方法中包含此类操作。但似乎,这一定是其他的可能性。
顺便说一句,@Startup
这不是合格的方式,因为在我的情况下它使用已经启动的服务,但我需要一些操作才能绑定服务。
有时我发现自己在模块类中使用了一个未命名的静态块——主要用于初始化我的 Tapestry 服务所依赖的遗留服务。就像是:
public final class MyModule {
static {
// early set-up here
}
public static void bind(ServiceBinder binder) {
// binding here
}
}
这似乎稍微提高了模块代码的可读性,但同时为单元测试设置可能有些困难。
在 Tawus 的回答之外;不,除了静态代码块(这是标准 Java,与 Tapestry 无关)之外,您无能为力。
如果它是 Tapestry Web 应用程序,您可以扩展TapestryFilter
并在那里进行初始化步骤。查看 TapestryFilter 的源代码以获得灵感。另请参阅TapestryAppInitializer