我想在我的WicketApplication中初始化我导入的Client.class,它与后端通信。我知道我必须在我的WebApplication.class中执行此操作(在init方法中对吗?)。但是如何在我的Page.classes中获取此实例?我该如何与之沟通?
感谢您的建议
答案 0 :(得分:2)
您可以使用getApplication()
或WebApplication.get()
获取当前的应用。从那里,您应该能够将其类型缩小到您自己的实现,并在Client.class
属性上调用getter。请记住,Application是所有用户之间的共享对象,如果您不希望发生令人讨厌的事情,则您的Client属性必须是线程安全的...
答案 1 :(得分:0)
最不紧密耦合的方法是使用像Google Guice这样的依赖注入框架,并将实例注入到组件中。除此之外,Cedric Gatay的答案涵盖了相当不错的解决方案。
使用DI将提供额外的好处,不必担心为单元测试获得不同的实现,因为您可以在testmodule中轻松定义一个。
你可以通过注射'来保持中间立场。您的外部类在页面构造函数中手动。这样就可以避免在此时包含新技术的麻烦,而不会阻止在以后切换到它的方式。这样,您的页面就不会与WebApplication的特定(您的)实现相关联,并且可以通过在测试中提供外部类的不同(模拟)实例来轻松测试。