hocon
app {
name = "MyApp"
version = "1.0.0"
debug = true
servers = [
{ ip = "127.0.0.1", port = 8080 },
{ ip = "192.168.0.1", port = 8080 }
]
}
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>io.circe</groupId>
<artifactId>circe-config</artifactId>
<version>0.8.0</version>
</dependency>
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
public class AppConfig {
private final Config config;
public AppConfig() {
this.config = ConfigFactory.load();
}
public Config getConfig() {
return config;
}
}
import com.typesafe.config.Config;
public class MyApp {
public static void main(String[] args) {
AppConfig appConfig = new AppConfig();
Config config = appConfig.getConfig();
String appName = config.getString("app.name");
int port = config.getInt("app.servers[0].port");
boolean debugMode = config.getBoolean("app.debug");
System.out.println("App Name: " + appName);
System.out.println("Port: " + port);
System.out.println("Debug Mode: " + debugMode);
}
}
import com.typesafe.config.Config;
import com.typesafe.config.ConfigException;
import io.circe.config.syntax.ConfigOps;
public class AppConfig {
private final AppConfigTemplate template;
public AppConfig() {
Config config = ConfigFactory.load();
this.template = config.getOrElse("app", AppConfigTemplate.empty()).as[AppConfigTemplate]().right()
.getOrElseThrow((ConfigException e) -> new RuntimeException("Invalid configuration: " + e.getMessage()));
}
public AppConfigTemplate getTemplate() {
return template;
}
}
public class MyApp {
public static void main(String[] args) {
AppConfig appConfig = new AppConfig();
AppConfigTemplate template = appConfig.getTemplate();
System.out.println("App Name: " + template.name);
System.out.println("Version: " + template.version);
System.out.println("Debug Mode: " + template.debug);
for (Server server : template.servers) {
System.out.println("Server IP: " + server.ip);
System.out.println("Server Port: " + server.port);
}
}
}
public class AppConfigTemplate {
public String name;
public String version;
public boolean debug;
public List<Server> servers;
public static AppConfigTemplate empty() {
return new AppConfigTemplate();
}
}
public class Server {
public String ip;
public int port;
}