下面是一个我通常在groovy中使用的小例子,但我想在java中使用类似的东西。
配置文件
datastore{
oracle{
host="localhost"
port=1521
dbname="orcl"
}
db2{
host="localhost"
port=12807
dbname="sppd"
}
}
Groovy的
public class Configuration {
public static final def cfg = new ConfigSlurper().parse(new File("configuration").toURL())
static main(args) {
println cfg.datastore.oracle.host
println cfg.datastore.db2.host
}
}
答案 0 :(得分:1)
我猜你想通过它的完整路径访问一个属性,例如来自Java的datastore.oracle.host
就像在Groovy中一样。如果是这样,请执行以下操作:
ConfigObject config = new ConfigSlurper().parse(new File("configuration").toURL());
Map flattenedConfig = config.flatten();
String oracleHost = (String) flattenedConfig.get("datastore.oracle.host");
比Java属性更好,因为维护了类型。来自Groovy User list post。
答案 1 :(得分:0)
这是太多的动态groovyness,但可以用XML,属性等表示。您可以尝试Common Configuration
,它将表达相同的数据:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<gui-definition>
<colors>
<background>#808080</background>
<text>#000000</text>
<header>#008000</header>
<link normal="#000080" visited="#800080"/>
<default>${colors.header}</default>
</colors>
</gui-definition>
阅读:
XMLConfiguration config = new XMLConfiguration("tables.xml");
String backColor = config.getString("colors.background");
String textColor = config.getString("colors.text");
String linkNormal = config.getString("colors.link[@normal]");
您还可以尝试PropertyConfiguration
:
# Properties definining the GUI
colors.background = #FFFFFF
colors.foreground = #000080
window.width = 500
window.height = 300
加载:
Configuration config = new PropertiesConfiguration("usergui.properties");
String backColor = config.getString("colors.background");