Author: simonetripodi Date: Sun Apr 3 11:10:42 2011 New Revision: 1088253 URL: http://svn.apache.org/viewvc?rev=1088253&view=rev Log: added DI framework integration sample, using Guice
Modified: commons/proper/discovery/trunk/src/site/xdoc/best-practices.xml Modified: commons/proper/discovery/trunk/src/site/xdoc/best-practices.xml URL: http://svn.apache.org/viewvc/commons/proper/discovery/trunk/src/site/xdoc/best-practices.xml?rev=1088253&r1=1088252&r2=1088253&view=diff ============================================================================== --- commons/proper/discovery/trunk/src/site/xdoc/best-practices.xml (original) +++ commons/proper/discovery/trunk/src/site/xdoc/best-practices.xml Sun Apr 3 11:10:42 2011 @@ -29,6 +29,7 @@ $Id$<br /> <a href="#Additional Tools">[Additional Tools]</a> <a href="#Calling Directly">[Calling Directly]</a> <a href="#Integrating into Factories : Wrapping">[Integrating into Factories : Wrapping]</a> + <a href="#Integrating into DI framework: Google Guice">[Integrating into DI framework: Google Guice]</a> <br /><br /> @@ -243,6 +244,32 @@ In this example, they are the same class is providing helper methods that 'wrap' <code>Discovery</code>. </p> +<a name="Integrating into DI framework: Google Guice"></a> +<h4>3.2 INTEGRATING INTO DI FRAMEWORKS : GOOGLE GUICE</h4> + +<p>Sometimes, a <code>DiscoverSingleton</code>/<code>Factory</code> approach like the one exposed above, +is not enough, because you may require injecting dependencies in your discovered SPI.</p> + +<p>In this example is shown how <code>DiscoverClass</code> can be useful inside DI framework such +<i>Google Guice</i>:</p> + +<source> +Injector injector = Guice.createInjector(new AbstractModule() { + + @Override + protected void configure() { + ... + DiscoverClass discoverClass = new DiscoverClass(); + bind(ServiceInterface.class).to(discoverClass.find(ServiceInterface.class)); + ... + } + +}); +</source> + +<p>In this way, <code>ServiceInterface</code> discovery is delegated to <i>Commons Discovery</i>, +but concrete class implementation creation and dependencies injection, to <i>Google Guice</i>.</p> + </subsection> </section> </body>