老板 7
描述
为了获得对某些组件(本例中为会话 bean)的引用,我们可以使用查找功能。如果组件不在同一个模块中,我们必须指定模块名称。
例子:
String moduleName = "exampleModuleName";
InitialContext context = new InitialContext();
IHelloLocal helloBean = (IHelloLocal) context.lookup("java:app/" + moduleName + "/" + HelloBean.class.getSimpleName() + "!" + IHelloLocal.class.getName());
这里的问题是硬编码的模块名称。
当模块名称始终相同时是可以接受的。但它可以及时改变。例如,当使用 maven 构建模块时,默认 jar 名称包含版本。可以在 jar 文件的名称中使用版本,但这迫使我们在代码中找到模块名称被硬编码的每个地方。这是一件可怕的事情。
问题
如何处理这种情况?