我想知道,是否有任何方便合适的方式在Tapestry5
中AppModule
描述某些操作,应该在 bind()
方法运行之前调用?
当然,可以在方法块顶部的bind()
方法中包含此类操作。但看起来,这必须是其他一些可能性。
BTW,@Startup
不符合此条件,因为在我的情况下,它使用已启动的服务,但我需要在绑定服务之前采取一些措施。
答案 0 :(得分:1)
有时我发现自己在模块类中使用了一个未命名的静态块 - 主要用于初始化我的Tapestry服务依赖的遗留服务。类似的东西:
public final class MyModule {
static {
// early set-up here
}
public static void bind(ServiceBinder binder) {
// binding here
}
}
这似乎有点提高了模块代码的可读性,但同时可能有点难以设置单元测试。
答案 1 :(得分:1)
在Tawus的回答之外;不,没有什么可以做的,缺少静态代码块(标准Java,而不是与Tapestry相关)。
答案 2 :(得分:0)
如果它是Tapestry Web应用程序,您可以扩展TapestryFilter
并在那里进行初始化步骤。查看TapestryFilter的源代码以获取灵感。另请参阅TapestryAppInitializer