@Documented @Retention(value=RUNTIME) @Target(value=TYPE) @Inherited public @interface DefaultImplementation
An annotation to apply to an interface to indicate which implementation
is the default implementation. The initial use case is to redirect Replaces
to another class to allow the replacement of an implementation that isn't
accessible due to visibility restrictions.
For example:
@DefaultImplementation(MyImpl.class)
public interface SomeInterface {
}
class MyImpl implements SomeInterface {
}
@Replaces(SomeInterface.class)
class OtherImpl implements SomeInterface {
}
In the above example the OtherImpl bean will replace the
MyImpl bean because the class in the Replaces annotation
has a default implementation.