blob: 7b3e932fe793baa10f53b585e95fe1801467c58c [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>Tamaya&#39;s Features</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="Homepage of Apache Tamaya (incubating)"/>
<meta name="author" content="Apache Tamaya Project Team"/>
<meta name="keywords" content="Apache Tamaya Incubating, configuration, Java, ASF, Apache Software Foundation"/>
<meta name="generator" content="JBake ${content.version}"/>
<!-- Le styles -->
<link href="css/bootstrap.min.css" rel="stylesheet"/>
<link href="css/asciidoctor.css" rel="stylesheet"/>
<link href="css/base.css" rel="stylesheet"/>
<link href="css/prettify.css" rel="stylesheet"/>
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<![endif]-->
<!-- Fav and touch icons from ASF -->
<link rel="shortcut icon" href="favicon.ico"/>
<link rel="apple-touch-icon" sizes="57x57" href="favicons/apple-touch-icon-57x57.png"/>
<link rel="apple-touch-icon" sizes="60x60" href="favicons/apple-touch-icon-60x60.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="favicons/apple-touch-icon-72x72.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="favicons/apple-touch-icon-76x76.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="favicons/apple-touch-icon-114x114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="favicons/apple-touch-icon-120x120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="favicons/apple-touch-icon-144x144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="favicons/apple-touch-icon-152x152.png"/>
<link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-touch-icon-180x180.png"/>
<link rel="icon" type="image/png" href="favicons/favicon-32x32.png" sizes="32x32"/>
<link rel="icon" type="image/png" href="favicons/favicon-194x194.png" sizes="194x194"/>
<link rel="icon" type="image/png" href="favicons/favicon-96x96.png" sizes="96x96"/>
<link rel="icon" type="image/png" href="favicons/android-chrome-192x192.png" sizes="192x192"/>
<link rel="icon" type="image/png" href="favicons/favicon-16x16.png" sizes="16x16"/>
<link rel="manifest" href="favicons/manifest.json"/>
<link rel="shortcut icon" href="favicons/favicon.ico"/>
<meta name="msapplication-TileColor" content="#603cba"/>
<meta name="msapplication-TileImage" content="favicons/mstile-144x144.png"/>
<meta name="msapplication-config" content="favicons/browserconfig.xml"/>
<meta name="theme-color" content="#303284"/>
</head>
<body onload="prettyPrint()">
<div id="wrap">
<div>
<!-- Fixed navbar -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Tamaya Home</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="start.html">Tamaya in 5 minutes</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="documentation/usecases.html">Use Cases and Requirements</a></li>
<li><a href="documentation/quickstart.html">Quickstart</a></li>
<li><a href="documentation/api.html">API</a></li>
<li><a href="documentation/core.html">Core</a></li>
<li><a href="documentation/extensions.html">Extension Guide</a></li>
<li class="divider"></li>
<li><a href="apidocs/stable/index.html">Javadoc 0.4-incubating (release/stable)</a></li>
<li><a href="apidocs/development/index.html">Javadoc 0.5-incubating-SNAPSHOT (development)</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="development/source.html">Sources</a></li>
<li><a href="development/community.html">Community</a></li>
<li><a href="development/team.html">Project Team</a></li>
<li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li>
<li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li>
<li><a href="devguide.html">Development Guide</a></li>
<li><a href="release-guide.html">Release Guide</a></li>
<li class="divider"></li>
<li><a href="development/possible-contributions.html">Possible Contributions</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="download.html">Download</a></li>
<li><a href="history.html">Release History</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://www.apache.org/">Apache Software Foundation (ASF)</a></li>
<li><a href="https://www.apache.org/foundation/how-it-works.html">How the ASF works</a></li>
<li><a href="https://www.apache.org/foundation/getinvolved.html">Get Involved</a></li>
<li><a href="https://www.apache.org/dev/">Developer Resources</a></li>
<li><a href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/security">Security</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<hr/>
<li><a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png" alt="Current Apache event"/></a></li>
</ul>
</li>
<!-- Example:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
-->
<li><a href="sitemap.xml">Sitemap</a></li>
<li><a href="feed.xml">Subscribe</a></li>
<li><a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
<img class="incubator-logo" src="logos/apache-incubator.png"/></a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<div class="page-header">
<h1>Tamaya&#39;s Features</h1>
</div>
<p><em>2019-11-17</em></p>
<p><div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Apache Tamaya comes with numerous useful features. This page lists the most important
ones. Also also have a look at the full feature list. If you don&#8217;t find your features,
please get in contact with us to discuss your ideas!</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_core_features">Core Features</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The Core Features are built-in riht away and available by default. Just add Tamaya to your project
dependencies and there you go!</p>
</div>
<div class="sect2">
<h3 id="_accessing_configuration">Accessing Configuration</h3>
<div class="paragraph">
<p>Tamaya provides a super simple API to access configuration:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Configuration config = Configuration.current();</pre>
</div>
</div>
<div class="paragraph">
<p>Yes it&#8217;s as easy as that. Optionally you can also pass your classloader of choice:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>ClassLoader myApplicationClassLoader = ...;
Configuration config = Configuration.current(myApplicationClassLoader);</pre>
</div>
</div>
<div class="paragraph">
<p>From there you can access your configuration properties:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>String host = config.getOrDefault("server.host", "localhost");
Optional&lt;Integer&gt; port = config.getOptional("server.port", Integer.class);</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_providing_configuration">Providing Configuration</h3>
<div class="paragraph">
<p>Providing configuration is as simple:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Implement the <code>PropertySource</code> interface.</p>
</li>
<li>
<p>Register your implementation with the Java <code>ServiceLoader</code>.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration_auto_discovery_and_builders">Configuration Auto-Discovery and Builders</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Tamaya can care about everything. You dont have to bother with
configuration sources, classloaders, overriding etc. Tamaya will collect and load
all registered property sources.</p>
</div>
<div class="paragraph">
<p>On the other hand if you prefer having full control, Tamaya provides
powerful factories and builders, with allow to built your customized
configuration and manage your own configuration lifecycle.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Configuration config = Configuration.builder()
.withDefaultPropertySources()
.addPropertySources(new MyCustomPropertySource())
.withDefaultConverters()
.build();</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_pluggable_extensions">Pluggable Extensions</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Tamaya comes with numerous features, that can be easily added. Just add
the corresponding dependency to your build. Yes, it&#8217;s as easy as that.
So let&#8217;s have a quick look at some of the most commonly used features&#8230;&#8203;</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_functional_extensions">Functional Extensions</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_dynamic_placeholders">Dynamic Placeholders</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_different_configuration_formats_json_yaml_xml_properties_ini">Different Configuration Formats: JSON, YAML, XML, properties, ini&#8230;&#8203;</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_support_for_configuration_injection">Support for Configuration Injection</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_support_for_configuration_templates">Support for Configuration Templates</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_ant_styled_file_resource_wildcards">Ant styled File Resource Wildcards</h2>
<div class="sectionbody">
</div>
</div>
<div class="sect1">
<h2 id="_support_for_springspring_boot">Support for Spring/Spring Boot</h2>
<div class="sectionbody">
</div>
</div></p>
<hr />
</div>
</div>
<div>
<div id="push"></div>
<div id="footer">
<div class="container">
<p class="muted credit">&copy; 2014-<span>2019</span> Apache Software Foundation | Mixed with <a href="https://getbootstrap.com/">Bootstrap v3.1.1</a>
| Baked with <a href="https://jbake.org">JBake <span>v2.6.4</span></a>
at <span>2019-11-17</span> |
<a class="twitter-follow-button" data-show-count="false" href="https://twitter.com/tamayaconf">Follow @tamayaconf</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</p>
<p>
<b>Disclaimer</b>
Apache Tamaya (incubating) is an effort undergoing
incubation at
The Apache Software Foundation (ASF), sponsored by
the Apache Incubator. Incubation is required of
all newly accepted projects until a further review indicates
that the infrastructure, communications, and decision making
process have stabilized in a manner consistent with other
successful ASF projects. While incubation status is not
necessarily a reflection of the completeness or stability of
the code, it does indicate that the project has yet to
be fully endorsed by the ASF.<br />
Apache, Apache Tamaya, and the Apache Tamaya logo are registered trademarks or trademarks of The Apache Software Foundation in the U.S. and/or other countries.<br />
<a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
<img class="incubator-logo" src="logos/apache-incubator.png" style="height: 50px;"/>
</a>
</p>
</div>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/prettify.js"></script>
</div>
</body>
</html>