@Documented @Retention(value=RUNTIME) @Target(value={ANNOTATION_TYPE,METHOD}) @DefaultScope(value=javax.inject.Singleton.class) @Executable public @interface Adapter
An Adapter
is advice applicable to a method that will create an entirely new bean definition that delegates to the
annotated method.
Typically used in conjunction with an interface or class that provides a "Single Abstract Method" (or SAM) type.
An example of usage could be to introduce a ApplicationEventListener
:
For example:
@Adapter(ApplicationEventListener)
public void onStartup(StartupEvent startupEvent) {
}
The above example will create a new bean that delegates to the onStartup
method that is an instance of ApplicationEventListener
.
The generic types are aligned and populated from the types defined in the method signature
This annotation can be used as a stereotype annotation. If for some reason the generated class cannot delegate to the method then a compilation error should occur.
public abstract Class<?> value