【发布时间】:2013-08-31 12:21:08
【问题描述】:
在我的一个 Vaadin 视图中,我试图通过使用 @Inject 注入来获取驻留在另一个项目 (bll) 中的业务对象。
Vaadin 视图:
public class FruitSaladView extends VerticalLayout implements View {
@Inject
BananaService bananaService;
...
}
我不能这样做,当然,bananaService 对象在运行时为空,因为我无处可对包进行组件扫描。
我正在使用注释,所以我的 Vaadin Web 项目中没有 web.xml,我什至没有 WEB-INF 文件夹。
我也知道有一些替代方案,例如 CDI-Utils 和 Vaadin CDI Vaadin 插件,以及 some other 解决方案,但它们似乎都将东西注入主 UI(而不是视图) 以及来自 Web 应用程序本身,而不是来自其他模块。
我正在使用 Vaadin 7 和 Tomcat 7(只要在给出以下问题的答案的情况下使用 Tomcat 可行)
问题:将另一个模块中的 bean 注入 Vaadin 视图的推荐方法是什么?我需要做什么才能完成此操作?
后续问题:使用上述方法后,这个应用使用Tomcat会不会有问题?
【问题讨论】:
-
将您的其他项目转换为 jar。放入您当前的项目类路径。我不认识 Vaadin,但一定有一个地方可以让您访问 IoC 容器。在那里声明你的 bean。
-
这就是问题所在。我无法访问 IoC 容器,因为我不知道如何或在哪里进行。在其他项目中,我在代码中使用 @Inject 并在 context.xml 中使用组件扫描成功注入。 Vaadin 本身不使用 context.xml。