PAK Core – IServiceProviderFactory
What you will learn
In this short summary you will get an idea how to use a factory to create an IServiceProvider
.
1. Basics
The IServiceProviderFactory
shall help with the creation of IServiceProvider
and is primarily used during the Engine Builder
process. It is especially useful when services need to be registered at construction time of the IServiceProvider
.
2. Signature
Before giving a short example on how the interface should be used, this section describes the signature of the IServiceProviderFactory
interface, as well as an overview on which methods have to be implemented.
|
Creates a new instance of an |
3. Usage
This section briefly outlines a few examples demonstrating how the implementing IServiceProviderFactory
should be used.
3.1. Used for the Engine Builder
Suppose that we have written an IServiceProvider
which only allows to register services at construction time. Of course you could use the constructor directly like shown in the usages here or you can pull the registration of services away from configuring the provider to use. The example below shows you a possible way to use the factory interface.
...;
final ContextBuilder cb = new ContextBuilder(); (1)
// Setting up factory
final SimpleServiceProviderFactory factory = new SimpleServiceProviderFactory();
factory.addService(IPersistenceService.class,new SimplePersistenceService()); (2)
factory.addService(IMappingService.class, new MappingService()); (2)
// Finishing engine builder
cb.setServiceProviderFactory(factory); (3)
final IContext context = cb.build();
final IEngine engine = new EngineBuilder()...setContext(context).build();
...;
1 | The IServiceProviderFactory can be set to the ContextBuilder as IServiceProvider is part of the IContext . |
2 | We register two services to the factory which will be given to the IServiceProvider once it is constructed. |
3 | We give the Context Builder the IServiceProviderFactory to use to create a new IContext . |
The resulting IContext
will contain the IServiceProvider
created by the factory with all the services preregistered already.
4. Default Implementations
-
de.asap.pak.core.simple.context.SimpleServiceProviderFactory
: Prototype implementation of the interface, which returns theSimpleServiceProvider
. Allows to preregister services in a map which is given to the provider at construction time. -
de.asap.pak.extra.guice.GuiceServiceProviderFactory
: Creates aGuiceServiceProvider
which uses the functionalities of guice to register services. Allows registering whole guice modules before provider creation.