...
The strategy used to determine what object gets injected is defined inside Tapestry IoC itself; thus we can take advantage of several features of the Tapestry IoC container in order to take control over specific injections.
...
Sometimes you'll want to define the override as a service of its own. This is useful if you want to inject a Logger specific to the service, or if the overriding implementation needs a service configuration:
Code Block | ||||
---|---|---|---|---|
| ||||
public static void bind(ServiceBinder binder) { binder.bind(SomeServiceType.class, SomeServiceTypeOverrideImpl.class).withId("SomeServiceTypeOverride"); } @Contribute(ServiceOverride.class) public static void setupApplicationServiceOverrides(MappedConfiguration<Class,Object> configuration, @Local SomeServiceType override) { configuration.add(SomeServiceType.class, override); } |
...
Decorating Services
Another option is to decorate the existing service. Perhaps you want to extend some of the behavior of the service but keep the rest.
...