从父模块到子模块的CDI注入bean

时间:2016-03-01 08:04:32

标签: java-ee cdi

仅关于CDI bean的问题,而不是EJB。

开发需要从父模块注入bean到子模块的架构是一种好习惯吗?

例如,我有三个模块:

  1. 常见 - 这里我需要使用一些环境设置,但常见并不知道它将在哪个环境中执行,客户端或服务器(在我的环境中)如果它在ear / lib目录中打包为lib,另外它由java se client测试;
  2. 客户端 - 此处我可以提供属性文件中的设置(例如,用于测试目的,不包装在耳中)
  3. 服务器 - 在这里我可以提供ejb配置文件中的设置(它是一个与普通相同的ejb模块)。
  4. 所以客户端依赖于常见服务器依赖于 common (它们扩展并使用来自common的类)但注射方向相反。所以@Inject注入点存在于 common 模块中,但生成器方法存在于客户端服务器中。

    除了哲学方面,我还有一个真正的问题。我可以进一步将ejb.jar中的bean注入到ear / lib / * .jar中,否则因类路径问题而无法实现?

    此致

1 个答案:

答案 0 :(得分:0)

您没有提及您的部署设置,所以我只能猜测客户端和服务器是单独打包的,而不是在同一个EAR中? 除非您将公共内容直接复制到您的模块中,或者您的模块扩展了公共类,否则我不明白您对父母和孩子的意思。
拥有循环依赖关系并不是一个好习惯,它会使测试变得困难并使代码紧密耦合。常见的不应该依赖于另一个模块中的bean来运行。

你可以注入模块,但是他们必须在meta-inf中定义自己的beans.xml。