Coffig is a simple and powerful configuration library for the Java language. It is built upon the idea of mapping configuration trees to Java objects. The following configuration tree in YAML:
some:
string: value1
array: [1, 2, 3]
object:
attr1: value1
attr2: [iris, jasmine, kiwi]
Can be retrieved as simply as:
Coffig coffig = Coffig.builder().withProviders(new JacksonProvider().addSource("url/to/file.yaml")).build();
String stringValue = coffig.get(String.class, "some.string");
int[] intArray = coffig.get(int[].class, "some.array");
MyPojo myPojo = coffig.get(MyPojo.class, "some.object");
String defaultValue = coffig.getOptional(String.class, "unknown.node").orElse("default");
Coffig is able to map any Java class by introspecting its members but can handle special cases with dedicated mappers. Mappers for several types are built-in:
- Array,
- List,
- Set,
- Map,
- Enum,
- Optional,
- URI/URL,
- Properties,
- Class.
You can add you own mappers by implementing the ConfigurationMapper
interface and registering it through the ServiceLoader mechanism.
Multiple providers can be used at once, each providing a separate configuration tree that will be merged into a global one. Several providers are built-in:
- Jackson (for YAML and JSON sources),
- Environment variables,
- System properties.
You can add you own mappers by implementing the ConfigurationProvider
interface and registering it through the ServiceLoader mechanism.
This source code is copyrighted by The SeedStack Authors and released under the terms of the Mozilla Public License 2.0.