|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
@Target(value={PARAMETER,FIELD,CONSTRUCTOR}) @Retention(value=RUNTIME) @Documented @UseWith(value={COMPONENT,MIXIN,PAGE,SERVICE}) public @interface Inject
This annotation serves is something of the Swiss Army knife for operations related to injection of dependencies into an arbitrary method of Java Bean.
It marks parameters that should be injected in the IoC container, and it marks fields that should be injected inside Tapestry components.
In terms of the IoC container; normally, resources take precedence over annotations when injecting. The Inject annotation overrides this default, forcing the resolution of the parameters value via the masterObjectProvider
, even when the parameter's type matches a type that is normally a
resource.
For service implementations, module classes, and other objects constructed via
ObjectLocator.autobuild(Class)
, this annotation indicates that an injection is
desired on the field, as with fields of a Tapestry component.
In terms of the IoC container, the Inject annotation is only used on parameters to service builder methods (and
contributor and decorator methods) and on module class constructors. constructors. However, inside Tapestry
components (and only inside components), it may be applied to fields. On fields that require injection, the
Inject annotation is required.
Finally, on a constructor, this is used to indicate which constructor should be used when more than one is
available.
ObjectProvider
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |