在文件中存储以下业务规则的最佳方法是什么,以便它们可以应用于输入值,这些输入值将是密钥?
Key-INDIA; Value-Delhi.
Key-Australia; Value-Canberra.
Key-Germany, Value-Berlin.
一种解决方案: - Xml
<Countries>
<India>Delhi</India>
<Australia>Canberra</Australia>
<Germany>Berlin</Germany>
</Countries>
随着规则数量的增加&gt; 1000;使用Map实现它是不可能的。
此致 Shreyas。
答案 0 :(得分:3)
使用.properties
文件并将其存储在键值对中。
India=Delhi.
Australia=Canberra.
Germany=Berlin.
并使用java.util.Properties
按照hmjd的说明读取该文件。
例如:
Properties prop = new Properties();
try {
//load a properties file
prop.load(new FileInputStream("countries.properties"));
//get the property value and print it out
System.out.println(prop.getProperty("India"));
System.out.println(prop.getProperty("Australia"));
System.out.println(prop.getProperty("Germany"));
} catch (IOException ex) {
ex.printStackTrace();
}
答案 1 :(得分:2)
使用java.util.Properties
从文件中写入和读取:
Properties p = new Properties();
p.setProperty("Australia", "Canberra");
p.setProperty("Germany", "Berlin");
File f = new File("my.properties");
FileOutputStream fos = new FileOutputStream(f);
p.store(fos, "my properties");
使用p.load()
从文件和p.getProperty()
读取它们,以便在加载后查询它们。
答案 2 :(得分:0)
创建属性文件(如file.properties):
INDIA=Delhi.
Australia=Canberra.
Germany=Berlin.
然后在代码中:
public static void main(String[] args) {
Properties prop = new Properties();
try {
prop.load(new FileInputStream("file.properties"));
String value= prop.getProperty("INDIA");
...
} catch (Exception e) {
}
}
答案 3 :(得分:0)
你看过Spring configuration了吗?这样你就可以/在config中创建一个map并为每个键存储对象定义。 e.g。
<map>
<entry key="India" value="Delhi">
</map>
您正在谈论业务规则,但目前您只是存储一个键/值对。如果这些规则变得更复杂,那么简单的键/值对就不够了。所以也许你需要这样的东西:
Map<String, Country>
在您的代码中,Country是(现在)首都的对象,但将来它将包含(比方说)位置,国际电话号码前缀或税收规则等。在Spring中它会类似于:
<map>
<entry key="India" ref="india"/>
</map>
<!-- create a subclass of Country -->
<bean id="india" class="com.example.India">
我意识到这比其他建议要复杂得多。但是,既然你在谈论规则,我怀疑你会想要配置/定义某种行为。您可以使用属性(或类似)执行此操作,但可能最终会为规则的不同行为方面设置不同的属性集。这很快成为真正的维护噩梦。