Guice Commons Configuration

A Guice module using Apache Commons Configuration for mapping named properties by using a type-based injection.

Лицензия

Лицензия

Категории

Категории

JUnit Тестирование компонентов Сеть GUI Взаимодействие с пользователем Configuration Библиотеки уровня приложения config Guice Dependency Injection
Группа

Группа

net.lamberto.junit
Идентификатор

Идентификатор

guice-commons-configuration
Последняя версия

Последняя версия

1.0.0
Дата

Дата

Тип

Тип

jar
Описание

Описание

Guice Commons Configuration
A Guice module using Apache Commons Configuration for mapping named properties by using a type-based injection.
Ссылка на сайт

Ссылка на сайт

https://github.com/marcolamberto/guice-commons-configuration
Система контроля версий

Система контроля версий

https://github.com/marcolamberto/guice-commons-configuration.git

Скачать guice-commons-configuration

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/net.lamberto.junit/guice-commons-configuration/ -->
<dependency>
    <groupId>net.lamberto.junit</groupId>
    <artifactId>guice-commons-configuration</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/net.lamberto.junit/guice-commons-configuration/
implementation 'net.lamberto.junit:guice-commons-configuration:1.0.0'
// https://jarcasting.com/artifacts/net.lamberto.junit/guice-commons-configuration/
implementation ("net.lamberto.junit:guice-commons-configuration:1.0.0")
'net.lamberto.junit:guice-commons-configuration:jar:1.0.0'
<dependency org="net.lamberto.junit" name="guice-commons-configuration" rev="1.0.0">
  <artifact name="guice-commons-configuration" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.lamberto.junit', module='guice-commons-configuration', version='1.0.0')
)
libraryDependencies += "net.lamberto.junit" % "guice-commons-configuration" % "1.0.0"
[net.lamberto.junit/guice-commons-configuration "1.0.0"]

Зависимости

compile (8)

Идентификатор библиотеки Тип Версия
org.projectlombok : lombok jar 1.16.6
commons-configuration : commons-configuration jar 1.10
com.google.guava : guava jar 18.0
com.google.inject : guice jar 4.0
org.slf4j : slf4j-api jar 1.7.12
ch.qos.logback : logback-classic jar 1.1.3
ch.qos.logback : logback-core jar 1.1.3
junit : junit jar 4.12

test (3)

Идентификатор библиотеки Тип Версия
net.lamberto.junit : guice-junit-runner jar 1.0.1
org.hamcrest : hamcrest-core jar 1.3
org.hamcrest : hamcrest-library jar 1.3

Модули Проекта

Данный проект не имеет модулей.

guice-commons-configuration

Continuous Integration: Build Status

A simple way for injecting typed configuration properties.

What is guice-commons-configuration?

guice-commons-configuration is a Guice module using Apache Commons Configuration for mapping named properties by using a type-based injection.

Basic usage

Configuration options can be placed in classes or interfaces. A configuration option could simply extend an existing type from ConfigurationOptionTypes.

public static final class HOSTNAME extends ConfigurationOptionTypes.StringOption {}
public static final class PORT extends ConfigurationOptionTypes.IntegerOption {}

You could easily create your own typed option by implementing the ConfigurationOptionType interface.

public class StructuredOptions {
	// ...
	
	public static StructuredOptions valueOf(String data) {
		// ... impl goes here
	}
	
	// ...
}

public static final class CUSTOM_OPTION implements ConfigurationOptionType<StructuredOptions> {
	@Override
	public Class<StructuredOptions> getConfigurationType() {
		return StructuredOptions.class;
	}

	@Override
	public StructuredOptions getValueFor(final String name, final Configuration configuration) {
		// ... building custom class instance
		return StructuredOptions.valueOf(configuration.getProperty(name));
	}
}

The Guice module requires a Map<String, String> with the configuration values and a variable list of configuration options or classes and interfaces holding them. Each key in the Map is named accordingly to the configuration option class.

Every injected configuration option must be present in the configuration Map.

You could install as many ConfigurationOptionsModule as you like but you have to pay attention to the configuration option classes because Guice bindings have to be unique.

// ... within a Module
// optionsMap = { HOSTNAME="github.com", PORT="80", CUSTOM_OPTION="{x:1,y:2,z:3}" }
install(new ConfigurationOptionsModule(
	optionsMap,
	HOSTNAME.class,
	PORT.class,
	AnotherClassOrInterfaceHoldingOptions.class
);
//... 

Injection requires the ConfigurationOption annotation with the configuration option class as value.

public MyClass {
	@Inject @ConfigurationOption(HOSTNAME.class)
	private String hostName;

	@Inject @ConfigurationOption(PORT.class)
	private Integer port;
	
	@Inject @ConfigurationOption(CUSTOM_OPTION.class)
	private StructuredOptions options;
}

Версии библиотеки

Версия
1.0.0