I understand the solution from scl as a container for all the possible
implementations of the dependency to be injected. It looks like a practical
solution when there are few implementations. Would it be an elegant
solution if we have a hundred implementations or so?
Im currently coding a solution for this problem as well. If I find a
different solution I'll post it :)
JP
El martes, 25 de febrero de 2014 03:06:34 UTC-5, scl escribió:
>
> public class OrganizationServiceProvider {
>
> private final OrganizationServiceImpl orgService;
> private final OrgDeatilsServiceImpl orgDetailService;
>
> @Inject
> OrganizationServiceProvider(final OrganizationServiceImpl
> orgService, final OrgDeatilsServiceImpl orgDetailService) {
> this.orgService = orgService;
> this.orgDetailService = orgDetailService;
> }
>
> public OrganizationService getServiceFor(/* you must pass the the
> necessary input to decide which impl to choose */) {
> // your code goes here. it must return either orgService or
> orgDetailService
> }
> }
>
> public class OrganizationsResource {
>
> private final OrganizationServiceProvider osProvider;
>
> @Inject
> OrganizationsResource(final OrganizationServiceProvider osProvider) {
> this.osProvider = osProvider;
> }
>
> // more code...
> }
>
> There is no special binding in the Guice module necessary since all
> injections go to concrete classes.
> Of course it would be nice to introduce an interface for
> OrganizationServiceProvider and have an OrganizationServiceProviderImpl.
> In this case you would need to bind the impl to the interface.
>
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.