【发布时间】:2012-03-29 16:23:24
【问题描述】:
我有一个使用 Maven 管理的 Java 应用程序。该项目涉及做某事的国家的概念,例如
public interface ICountry {
public void doSomething();
}
public class England implements ICountry {...}
public class Brazil implements ICountry {...}
public class CountryApp {
public static void main (String args[]) {
ICountry country = null;
// PSEUDOCODE:
// Retrieve a chosen implementation of ICountry using Spring
country.doSomething();
}
}
根据我对Spring 的了解,我可能为每个国家/地区拥有一个Spring 配置文件。看起来可以使用Maven profiles 使用配置文件中的元素选择适当的配置文件。但是文档说配置文件旨在支持在不同环境上构建,而不是具有不同的应用程序配置。
这听起来像是一种合理的方法吗?如果有人知道更好或“更标准”的方式,请告诉我:)
编辑:最终我希望能够为每个国家/地区创建一个 .jar。例如
- myapp-england.jar,
- myapp-brazil.jar 等
【问题讨论】:
-
你想测试每个国家?或者您想根据测试环境选择正确的国家/地区?
-
您如何确定应该使用哪个
Country?使用 DI 注入国家似乎有点不对劲。 -
@YMomb 最终,我希望能够为每个国家/地区创建一个 .jar。例如myapp-england.jar、myapp-brazil.jar 等。
-
@beerbajay 目前我会选择使用 Maven 配置文件的
ICountry。例如mvn clean compile -P england-profile,这将选择引用 England 类的 Spring 配置。我很可能在这里误解了 Spring 的使用。 -
你真的需要生产单独的罐子吗?您可以使用系统属性,以便最终用户可以配置要使用的
Country类,然后您只需提供一个 jar。或者,如果每个国家/地区有很多配置,您可以为每个国家/地区设置单独的 XML 配置,然后系统属性将确定要加载其中的哪些。