Annotation Interface ComponentType


@Retention(RUNTIME) @Target(METHOD) @Incubating public @interface ComponentType
Declares a custom ComponentSpec type. The following example demonstrates how to register a custom component type using a plugin with a ComponentType annotation. Furthermore the plugin creates an instance of SampleComponent named 'sampleComponent'.
 interface SampleComponent extends ComponentSpec {}
 class DefaultSampleComponent extends BaseComponentSpec implements SampleComponent {}

 apply plugin: MySamplePlugin

 class MySamplePlugin extends RuleSource {
     @ComponentType
     void register(TypeBuilder<SampleComponent> builder) {
         builder.defaultImplementation(DefaultSampleComponent)
     }

     @Mutate
     void createSampleLibraryComponents(ModelMap<SampleComponent> componentSpecs) {
         componentSpecs.create("sampleComponent")
     }
 }