Repository: incubator-tamaya-site Updated Branches: refs/heads/master e1ec90317 -> 5cc9fccf2
TAMAYA-318 Updated documentation. Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/commit/b8fba796 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/tree/b8fba796 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/diff/b8fba796 Branch: refs/heads/master Commit: b8fba79669f9db5382488f49e324d4b6e8d5b1a5 Parents: e1ec903 Author: Anatole Tresch <anatole.tre...@trivadis.com> Authored: Mon Nov 20 15:08:05 2017 +0100 Committer: Anatole Tresch <anatole.tre...@trivadis.com> Committed: Mon Nov 20 15:08:05 2017 +0100 ---------------------------------------------------------------------- content/documentation/core.adoc | 27 +++--- content/documentation/extensions.adoc | 6 +- .../extensions/mod_microprofile.adoc | 93 ++++++++++++++++++++ content/documentation/extensions/mod_osgi.adoc | 3 +- .../extensions/mod_spi-support.adoc | 67 -------------- .../documentation/extensions/mod_spring.adoc | 93 ++++++++++++++------ content/documentation/spisupport.adoc | 67 ++++++++++++++ 7 files changed, 247 insertions(+), 109 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/core.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/core.adoc b/content/documentation/core.adoc index 575ca1e..d4604f2 100644 --- a/content/documentation/core.adoc +++ b/content/documentation/core.adoc @@ -10,7 +10,10 @@ and building blocks for supporting SPI implementations. Tamaya Core contains the following artifacts: -* Implementations of +Configuration, ConfigurationContext, ConfigurationContextBuilder, ConfigurationProviderSpi+ +* *tamaya-spisupport* provides implementations and base classes for different API artifacts such as +Configuration, + ConfigurationContext, ConfigurationContextBuilder, ConfigurationProviderSpi, BasePropertySource+ and more. It is + built as independent core module, which also can be used with other implementations. The *tamaya-core* + implementation leverages these base classes to a build up a full API implementation. * A +java.util.ServiceLoader+ based +ServiceContext+ implementation. Hereby it implements component priorization based on the +@Priority+ annotations. * A +PropertyConverterManager+ that loads and stores references to all the preconfigured +PropertyConverter+ instances @@ -42,8 +45,8 @@ For details about the extension modules available and their functionality refer [[CorePropertyConverters]] === Default PropertyConverters -The _Core_ module provides several +PropertyConverter+ implementations by default. Find below the -listing of converters automatically registered with the Core module: +The _SPI_ base module provides several +PropertyConverter+ implementations, which are automatically registered by the +_Core_ module. Find below the listing of converters automatically registered with the Core module: [width="100%",frame="1",options="header",grid="all"] |======= @@ -74,8 +77,9 @@ listing of converters automatically registered with the Core module: === Registering PropertyConverters Additional +PropertyConverters+ can be implemented easily. It is recommended to register them using -the +java.util.ServiceLoader+, meaning you add a file under +META-INF/service/org.apache.tamaya.spi.PropertyConverter+ containing the fully qualified -class names of the converters to be registered (one line each). +the +java.util.ServiceLoader+, meaning you add a file under +META-INF/service/org.apache.tamaya.spi.PropertyConverter+ +containing the fully qualified class names of the converters to be registered (one line each) to enable +auto-discovery. Alternatively you can also use a +ConfigurationContextBuilder+ to add additional converters programmatically. @@ -84,8 +88,8 @@ programmatically. [[ComponentLoadingAndPriorization]] === Component Loading and Priorization -Tamaya _Core_ in general loads all components by default using the +java.util.ServiceLoader+ mechanism. This means that new components -must be registered by adding a file under +META-INF/service/<myInterfaceName>+ containing the fully +Tamaya _Core_ in general loads all components by default using the +java.util.ServiceLoader+ mechanism. This means that +new components must be registered by adding a file under +META-INF/service/<myInterfaceName>+ containing the fully qualified implementation class names of the components to be registered (one line per each). The +ServiceLoader+ itself does not provide any functionality for overriding or ordering of components. Tamaya _Core_ adds such a functionality with the possibility to add +@Priority+ @@ -108,8 +112,8 @@ NOTE: Sorting the property sources based on their ordinal value is only the defa [[RegisteringPropertySources]] === Registering Property Sources -+PropertySource+ implementations that provide configuration properties are registered as components as described in the previous -section. Hereby the precedence (ordering) of property sources is not hard-coded. Instead a +Comparator<PropertySource>+ ++PropertySource+ implementations that provide configuration properties are registered as components as described in the +previous section. Hereby the precedence (ordering) of property sources is not hard-coded. Instead a +Comparator<PropertySource>+ can be passed to a +ConfigurationContextBuilder+ to perform automatic ordering of the property sources registered. The default implementation hereby implements the following logic: @@ -145,7 +149,7 @@ applications already easily. Basically configuration is built up by default as === Overview of Registered Default Property Sources and Providers The Tamaya Core implementation provides a couple of default +PropertySource+ implementations, which are automatically -registered. They are all in the package +org.apache.tamaya.core.propertysource+ and +registered. They are all in the package +org.apache.tamaya.spisupport.propertysource+ and +org.apache.tamaya.core.provider+: [width="100%",frame="1",options="header",grid="all"] @@ -158,6 +162,9 @@ registered. They are all in the package +org.apache.tamaya.core.propertysource+ |System Properties |SystemPropertySource |1000 |======= +NOTE: Similarly to property converters the property sources shown here are defined within the "tamaya-spisupport* module + and automatically registered with the *tamaya-core* implementation using Tamaya's auto-discovery mechanisms. + NOTE: +JNDIPropertySource+ is provided by the `tamaya-jndi` extension module. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/extensions.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/extensions.adoc b/content/documentation/extensions.adoc index ceeac7d..1ca2b59 100644 --- a/content/documentation/extensions.adoc +++ b/content/documentation/extensions.adoc @@ -24,12 +24,13 @@ Mature extensions have a stable API and SPI, similar to the API and Implementati |+org.apache.tamaya.ext:tamaya-injection-cdi+ | Java EE/standalone compliant CDI integration using CDI for injection. | link:extensions/mod_cdi.html[Documentation] |+org.apache.tamaya.ext:tamaya-jndi+ |Provides a JNDI based PropertySource. |link:extensions/mod_jndi.html[Documentation] |+org.apache.tamaya.ext:tamaya-json+ |Provides format support for JSON based configuration. |link:extensions/mod_json.html[Documentation] +|+org.apache.tamaya.ext:tamaya-microprofile+ |Implemenation and Integration with the Microprofile API. | link:extensions/mod_microprofile.html[Documentation] |+org.apache.tamaya.ext:tamaya-mutable-config+|Provides API/SPI for writing configuration |link:extensions/mod_mutable_config.html[Documentation] |+org.apache.tamaya.ext:tamaya-optional+ |Lets a Tamaya configuration to be used as an optional project extension only. |link:extensions/mod_optional.html[Documentation] +|+org.apache.tamaya.ext:tamaya-osgi+ |Integration with OSGI containers. |link:extensions/mod_osgi.html[Documentation] |+org.apache.tamaya.ext:tamaya-resolver+ |Provides placeholder and dynamic resolution functionality for configuration values. |link:extensions/mod_resolver.html[Documentation] |+org.apache.tamaya.ext:tamaya-resources+ |Provides ant-style resource path resolution |link:extensions/mod_resources.html[Documentation] -|+org.apache.tamaya.ext:tamaya-spi-support+ |Tamaya support module for SPI implementation. |link:extensions/mod_spi-support.html[Documentation] -|+org.apache.tamaya.ext:tamaya-spring+ | Integration for Spring / Spring Boot. | link:extensions/mod_spring.html[Documentation] +|+org.apache.tamaya.ext:tamaya-spring+ |Integration for Spring / Spring Boot. | link:extensions/mod_spring.html[Documentation] |+org.apache.tamaya.ext:tamaya-yaml+ |Support for using yaml as a configuration format. |link:extensions/mod_yaml.html[Documentation] |======= @@ -57,7 +58,6 @@ NOTE: All extensions currently run on Java 7 as well as on Java 8. |+org.apache.tamaya.ext:tamaya-jodatime_beta+ |Provides support for JodaTime. | link:extensions/mod_jodatime.html[Documentation] |+org.apache.tamaya.ext:tamaya-management_alpha+ |Provides JMX support for inspecting configuration. |link:extensions/mod_management.html[Documentation] |+org.apache.tamaya.ext:tamaya-metamodel_alpha+ |Provides an XML API for building configuration. |link:extensions/mod_metamodel-staged.html[Documentation] -|+org.apache.tamaya.ext:tamaya-osgi_alpha+ |Integration with OSGI containers. | link:extensions/mod_osgi.html[Documentation] |+org.apache.tamaya.ext:tamaya-remote_alpha+ |Remote configuration support using the server API. |link:extensions/mod_remote.html[Documentation] |+org.apache.tamaya.ext:tamaya-server_alpha+ |Publishes configuration as a REST service. |link:extensions/mod_server.html[Documentation] |+org.apache.tamaya.ext:tamaya-ui_alpha+ |Provides a web UI for a VM running Tamaya. |link:extensions/mod_ui.html[Documentation] http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/extensions/mod_microprofile.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/extensions/mod_microprofile.adoc b/content/documentation/extensions/mod_microprofile.adoc new file mode 100644 index 0000000..9d5951d --- /dev/null +++ b/content/documentation/extensions/mod_microprofile.adoc @@ -0,0 +1,93 @@ +:jbake-type: page +:jbake-status: published + += Apache Tamaya - Extension: Microprofile Implementation + +toc::[] + + +[[Spring]] +== Tamaya Microprofile Implementation (Extension Module) + +Tamaya _Microprofile_ is an extension module. Refer to the link:../extensions.html[extensions documentation] for further details. + + +=== What functionality this module provides ? + +Tamaya _Microprofile_ currently provides full integration for the Microprofile Configuration API: + +* A Microprofile +ConfigSource+ implementation can be used with Tamaya. +* A Tamaya +PropertySource+ can be used with any Microprofile implementation. +* The same is also true for +Converter,PropertyConverter+. +* Nevertheless Tamaya also fully implements the Microprofile API and also successfully is compatible with the + Microprofile TCK. + + +=== Compatibility + +Both modules are based on Java 8, so they will run on Java 8 and beyond. The implemented Microprofile API is currently +version 1.1. + + +=== Installation + +To benefit from Tamaya Microprofile you only must one of the following dependencies to your module: + +[source, xml] +----------------------------------------------- +<dependency> + <groupId>org.apache.tamaya.ext</groupId> + <artifactId>tamaya-microprofile</artifactId> + <version>{tamaya_version}</version> +</dependency> +----------------------------------------------- + + +=== Using Microprofile API + +Refer to http://microprofile.io/project/eclipse/microprofile-config for details on how the API works and should be used. In general, you will see +many similarities with Tamaya, since Tamaya heavily influenced the design of microprofile.io regarding configuration. +Nevertheless Tamaya's API is much more complete and provides far more feature as of now. Further changes in this area +may be good to be expected, since as of now also a corresponding specification (JSR) has been started and will +be supported by Tamaya as well. + +[source, java] +-------------------------------------------------------- +// SE API + +Config config = ConfigProvider.getConfig(); +String serverUrl = config.getValue("acme.myprj.some.url", String.class); +callToServer(serverUrl); + +// ===================================================================== + +// CDI Injection API + +@ApplicationScoped +public class InjectedConfigUsageSample { + + @Inject + private Config config; + + //The property myprj.some.url must exist in one of the configsources, otherwise a + //DeploymentException will be thrown. + @Inject + @ConfigProperty(name="myprj.some.url") + private String someUrl; + //The following code injects an Optional value of myprj.some.port property. + //Contrary to natively injecting the configured value this will not lead to a + //DeploymentException if the configured value is missing. + @Inject + @ConfigProperty(name="myprj.some.port") + private Optional<Integer> somePort; + //Injects a Provider for the value of myprj.some.dynamic.timeout property to + //resolve the property dynamically. Each invocation to Provider#get() will + //resolve the latest value from underlying Config. + //The existence of configured values will get checked during startup. + //Instances of Provider<T> are guaranteed to be Serializable. + @Inject + @ConfigProperty(name="myprj.some.dynamic.timeout", defaultValue="100") + private javax.inject.Provider<Long> timeout; +} +-------------------------------------------------------- + http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/extensions/mod_osgi.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/extensions/mod_osgi.adoc b/content/documentation/extensions/mod_osgi.adoc index a00c1be..241f795 100644 --- a/content/documentation/extensions/mod_osgi.adoc +++ b/content/documentation/extensions/mod_osgi.adoc @@ -44,8 +44,9 @@ org.apache.felix:org.apache.felix.configadmin:{felix_version} # API and core org.apache.geronimo.specs:geronimo-annotation_1.2_spec:1.0 org.apache.tamaya:tamaya-api:{tamaya_version} -org.apache.tamaya:tamaya-core:{tamaya_version} org.apache.tamaya:tamaya-spisupport:{tamaya_version} +org.apache.tamaya:tamaya-core:{tamaya_version} +# Required extensions org.apache.tamaya.ext:tamaya-functions:{tamaya_version} org.apache.tamaya.ext:tamaya-osgi:{tamaya_version} ----------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/extensions/mod_spi-support.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/extensions/mod_spi-support.adoc b/content/documentation/extensions/mod_spi-support.adoc deleted file mode 100644 index afc1f49..0000000 --- a/content/documentation/extensions/mod_spi-support.adoc +++ /dev/null @@ -1,67 +0,0 @@ -:jbake-type: page -:jbake-status: published - -= Apache Tamaya - Extension: Classloader Isolation Support - -toc::[] - - -[[SPISupport]] -== Tamaya SPI Support (Extension Module) - -Tamaya _SPI Support_ is an extension module. Refer to the link:../extensions.html[extensions documentation] for further details. - - -=== What functionality this module provides ? - -Tamaya _SPI Support_ provides a few helpful base classes that can be used to implement some of the often -used SPI parts in Tamaya: - -* +BasePropertySource+ provides an abstract base class for implementation of your own PropertySources. -* +DefaultConfiguration+ provides you with a simple implementation of the +Configuration+ interface based on a - +ConfigurationContext+ provided. This is also very useful for mocking configuration during test execution, but - not only constraint to that use case. -* +DefaultConfigurationContext+ provides you with a working implementation of the +ConfigurationContext+. -* +EnumConverter+ is a converter implementation that can automatically select the currect enumeration values based - on a configured entry. -* +MapPropertySource+ implements a static property source based on +java.util.Map+. -* +PriorityServiceComparator+ compares arbitrary services based on their +@Priority+ annotations (also handling the - case, where no such annotation is present). -* +PropertiesResourcePropertySource+ is an implementation of a +PropertySource+ based on a +Properties+ instance, - lodable from any +URL+. -+ +PropertyConverterManager+ is a service class very useful, when implementing instances of +ConfigurationContext+. - It manages registered instances of +PropertyConverter+ and provides easy to use type conversion logic. -+ +PropertyFiltering+ provides another helpful class that manages +PropertyFilter+ instances and provides an - easy to use high level API. -+ +PropertySourceComparator+ provides an implementation that compares +PropertySources+ based on their +getOrdinal()+ - values and their class names. -+ The default configuration implementation also allows to replace the raw value evaluation - logic using a +ConfigValueEvaluator+, similar to Tamaya's core implementation. - -NOTE: It is highly recommended that you read also the link:../core.html[documentation] of Tamaya's - implementation core, since this describes the abstrations in use in more - detail. This module allows to reuse Tamaya's implementation artifacts but - still allow alternate implementations of the core API to be used. - - -=== Compatibility - -The module is based on Java 7, so it will run on Java 7 and beyond. - - -=== Installation - -To use Tamaya's _spisupport_ you only must add the corresponding dependency to your module: - -[source, xml] ------------------------------------------------ -<dependency> - <groupId>org.apache.tamaya.ext</groupId> - <artifactId>tamaya-spisupport</artifactId> - <version>{tamaya_version}</version> -</dependency> ------------------------------------------------ - -The component will not register any components but only providing portable base classes for some common SPI -implementation tasks. It only depends on the API, so it should be safely reusable also with other implementations -of the Tamaya API similarly. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/extensions/mod_spring.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/extensions/mod_spring.adoc b/content/documentation/extensions/mod_spring.adoc index 9f7fb43..d335b25 100644 --- a/content/documentation/extensions/mod_spring.adoc +++ b/content/documentation/extensions/mod_spring.adoc @@ -14,7 +14,7 @@ Tamaya _Spring_ is an extension module. Refer to the link:../extensions.html[ext === What functionality this module provides ? -Tamaya _Spring_ currently provides two implementations also full integration for Spring: +Tamaya _Spring_ currently provides full integration for Spring and Spring Boot: * A Spring +@Configuration+ implementation that also provides a Tamaya based version of +org.springframework.context.support.PropertySourcesPlaceholderConfigurer+. @@ -27,7 +27,7 @@ Tamaya _Spring_ currently provides two implementations also full integration for === Compatibility -Both modules are based on Java 7, so they will run on Java 7 and beyond. The extension shown here works similarly +Both modules are based on Java 8, so they will run on Java 8 and beyond. The extension shown here works similarly with Spring Framework as well as Spring Boot. @@ -48,7 +48,22 @@ To benefit from Tamaya Spring integration you only must one of the following dep === Registering Tamaya Spring Configuration Basically to activate the Tamaya Spring support the most simple thing is to a enable the Tamaya package for being -scanned for Spring components, e.g. +scanned for Spring components, e.g. using annotations: + +[source, java] +-------------------------------------------------------- +@SpringBootApplication +@ComponentScan({"org.apache.tamaya.integration.spring"}) +public class SampleWebFreeMarkerApplication { + + public static void main(String[] args) throws Exception { + SpringApplication.run(SampleWebFreeMarkerApplication.class, args); + } + +} +-------------------------------------------------------- + +Of course, you can still use Spring's XML configuration variant similarly: [source, xml] -------------------------------------------------------- @@ -65,11 +80,9 @@ scanned for Spring components, e.g. </beans> -------------------------------------------------------- -NOTE: Of course you can also use the newer +@ComponentScan+ annotation as described by the Spring documentation. - -Similarly if you dont want to use component scanning you can configure things using plain old XML. Simply add the -following lines somewhere into one of your application context configuration files. +Though not recommended you can explicitly register the Tamaya related beans manually as well in your context configuration +files: [source, xml] -------------------------------------------------------- @@ -90,6 +103,7 @@ is resolved from the current Tamaya configuration. </bean> -------------------------------------------------------- +Similarly === Configuring your Beans @@ -100,42 +114,65 @@ Similarly you can inject any kind of configuration as supported by Tamaya into y ** * Created by Anatole on 25.09.2015. */ -@ConfigDefaultSections +@ConfigDefaultSections("app.root") // optional <1> +@Component public class ConfiguredSpringBean { + @Value("${application.message:Hello World}") <2> private String message; @Autowired private Environment env; + @Config(value = "alternateMessage", required = false) <3> + private String anotherMessage = "N/A"; + @Config("java.version") private String javaVersion; - @Config - @ConfigDefault("23") + @Config(value={"number", "testNum", "[notavailable]"}, defaultValue="23") <4><5> private int testNumber; - public String getJavaVersion(){ - return javaVersion; - } + ... +} +-------------------------------------------------------- - public int getTestNumber(){ - return testNumber; - } +<1> You can configure default section prefixes. This is an optional feature. +<2> Tamaya does not require you to change your code. You can still work with + Spring injection for your configuration, but Tamaya will override Spring + configuration by default. +<3> You can also define entries as not required, which allows you to perform + default inialization using Java idoms. +<4> Tamaya allows you to define an ordered list of key candidates, which are + combined with the section prefix, if present, to the full keys. Keys added + in brackets ([]) are interpreted as absolute keys, so the example above + the key candidate list evaluates to +app.root.number", "app.root.testNum", + "notavailable"+. +<5> You can configure default values used, if no other value could be evaluated + for the given keyset. - public Environment getEnv(){ - return env; - } +Summarizing you get all the nice features of Tamaya out of the box running +with your Spring code. - public void setMessage(String message){ - this.message = message; - } +This also includes for example support for _dynamic values_: - public String getMessage() { - return message; - } -} +[source, java] +-------------------------------------------------------- +@Config(value = "foreground.color", required = false, defaultValue = "#DDDDDD") +private DynamicValue<Color> foregroundColor; -------------------------------------------------------- -Summarizing you get all the nice features of Tamaya out of the box running -with your Spring code. +Dynamic values are a very flexible mechanism for managing configuration changes. +You can even use an update policy to define how you want to handle configuration +changes four your value: + +[source, java] +-------------------------------------------------------- +foregroundColor.setUpdatePolicy(UpdatePolicy.IMMEDEATE); +foregroundColor.addPropertyChangeListener(() -> { + System.out.println("New forground color: " + foregroundColor.get(); +}); +-------------------------------------------------------- + +IMPORTANT: For a full description of Tamaya's injection API please + refer to the link:extensions/mod_injection.html[corresponding documentation]. http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/b8fba796/content/documentation/spisupport.adoc ---------------------------------------------------------------------- diff --git a/content/documentation/spisupport.adoc b/content/documentation/spisupport.adoc new file mode 100644 index 0000000..b5c7e17 --- /dev/null +++ b/content/documentation/spisupport.adoc @@ -0,0 +1,67 @@ +:jbake-type: page +:jbake-status: published + += Apache Tamaya: SPI Support Module + +toc::[] + + +[[SPISupport]] +== Tamaya SPI Support (Extension Module) + +Tamaya _SPI Support_ is an extension module. Refer to the link:../extensions.html[extensions documentation] for further details. + + +=== What functionality this module provides ? + +Tamaya _SPI Support_ provides a few helpful base classes that can be used to implement some of the often +used SPI parts in Tamaya: + +* +BasePropertySource+ provides an abstract base class for implementation of your own PropertySources. +* +DefaultConfiguration+ provides you with a simple implementation of the +Configuration+ interface based on a + +ConfigurationContext+ provided. This is also very useful for mocking configuration during test execution, but + not only constraint to that use case. +* +DefaultConfigurationContext+ provides you with a working implementation of the +ConfigurationContext+. +* +EnumConverter+ is a converter implementation that can automatically select the currect enumeration values based + on a configured entry. +* +MapPropertySource+ implements a static property source based on +java.util.Map+. +* +PriorityServiceComparator+ compares arbitrary services based on their +@Priority+ annotations (also handling the + case, where no such annotation is present). +* +PropertiesResourcePropertySource+ is an implementation of a +PropertySource+ based on a +Properties+ instance, + lodable from any +URL+. ++ +PropertyConverterManager+ is a service class very useful, when implementing instances of +ConfigurationContext+. + It manages registered instances of +PropertyConverter+ and provides easy to use type conversion logic. ++ +PropertyFiltering+ provides another helpful class that manages +PropertyFilter+ instances and provides an + easy to use high level API. ++ +PropertySourceComparator+ provides an implementation that compares +PropertySources+ based on their +getOrdinal()+ + values and their class names. ++ The default configuration implementation also allows to replace the raw value evaluation + logic using a +ConfigValueEvaluator+, similar to Tamaya's core implementation. + +NOTE: It is highly recommended that you read also the link:../core.html[documentation] of Tamaya's + implementation core, since this describes the abstrations in use in more + detail. This module allows to reuse Tamaya's implementation artifacts but + still allow alternate implementations of the core API to be used. + + +=== Compatibility + +The module is based on Java 7, so it will run on Java 7 and beyond. + + +=== Installation + +To use Tamaya's _spisupport_ you only must add the corresponding dependency to your module: + +[source, xml] +----------------------------------------------- +<dependency> + <groupId>org.apache.tamaya.ext</groupId> + <artifactId>tamaya-spisupport</artifactId> + <version>{tamaya_version}</version> +</dependency> +----------------------------------------------- + +The component will not register any components but only providing portable base classes for some common SPI +implementation tasks. It only depends on the API, so it should be safely reusable also with other implementations +of the Tamaya API similarly.