在bind()方法之前运行一些操作

时间:2013-01-30 13:12:50

标签: java tapestry

我想知道,是否有任何方便合适的方式在Tapestry5AppModule描述某些操作,应该在 bind()方法运行之前调用

当然,可以在方法块顶部的bind()方法中包含此类操作。但看起来,这必须是其他一些可能性。

BTW,@Startup不符合此条件,因为在我的情况下,它使用已启动的服务,但我需要在绑定服务之前采取一些措施。

3 个答案:

答案 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