-
Notifications
You must be signed in to change notification settings - Fork 110
Customized injection
This article describes how to extend/override how dependency injection works. If you just want to inject your own object, see Injecting-non-artemis-dependencies instead.
By default, the World injects dependencies during construction. This is done by an Injector registered with the WorldConfiguration. If greater control is needed, you can provide your own Injector
with a customized FieldHandler
.
The below code creates a FieldHandler which will contain two field FieldResolvers: ArtemisFieldResolver and CustomFieldsResolver. In this case, the WiredFieldResolver is not part of the world configuration, so unless the CustomFieldsResolver handles fields annotated with @Wire
, these fields will not be injected. Systems, Managers, ComponentMappers & EntityFactories will still be injected.
FieldHandler fieldHandler = new FieldHandler(new InjectionCache());
fieldHandler.addFieldResolver(new CustomFieldsResolver());
Injector injector = new CachedInjector().setFieldHandler(fieldHandler);
World world = new World(new WorldConfiguration().setInjector(injector));
- Injector provides overall logic for dependency injection.
- FieldHandler providing value for fields eligible for dependency injection. Multiplexes multiple FieldResolvers.
- FieldResolver provides values for injection.
- Injection default implementation
- Overview
- Concepts
- Getting Started
- Using
- More guides
- Plugins
- Game Gallery
- Tools and Frameworks
- API reference