org.apache.ignite.resources

## Annotation Type SpringResource

-     @Documented
       @Retention(value=RUNTIME)
       @Target(value={METHOD,FIELD})
      public @interface SpringResource

  Annotates a field or a setter method for injection of resource from Spring `ApplicationContext`. Use it whenever you would like to inject resources specified in Spring application context of XML configuration.

  Logger can be injected into instances of following classes:

  - `ComputeTask`
  - `ComputeJob`
  - `IgniteSpi`
  - `LifecycleBean`

  # Resource Name

  This is a mandatory parameter. Resource name will be used to access Spring resources from Spring `ApplicationContext` or XML configuration.

  Note that Spring resources cannot be peer-class-loaded. They must be available in every `ApplicationContext` or Spring XML configuration on every grid node. For this reason, if injected into a `Serializable` class, they must be declared as `transient`.

  The lifecycle of Spring resources is controlled by Spring container.

  # Examples

  Here is how injection would typically happen:

       public class MyGridJob implements ComputeJob {
            ...
            @SpringResource(resourceName = "bean-name")
            private transient MyUserBean rsrc;
            ...
        }

  or

       public class MyGridJob implements ComputeJob {
           ...
           private transient MyUserBean rsrc;
           ...
           @SpringResource(resourceName = "bean-name")
           public void setMyUserBean(MyUserBean rsrc) {
                this.rsrc = rsrc;
           }
           ...
       }

  and user resource `MyUserResource`

       public class MyUserResource {
           ...
           @SpringResource(resourceName = "bean-name")
           private MyUserBean rsrc;
           ...
           // Inject logger (or any other resource).
           @LoggerResource
           private IgniteLogger log;

           // Inject ignite instance (or any other resource).
           @IgniteInstanceResource
           private Ignite ignite;
           ...
       }

  where spring bean resource class can look like this:

       public class MyUserBean {
           ...
       }

  and Spring file

       <bean id="bean-name" class="my.foo.MyUserBean" singleton="true">
               ...
       </bean>

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `boolean` | `required` Determines whether the injection procedure should fail in case no beans with specified name or type are present in the Spring Context.
    `Class<?>` | `resourceClass` Resource bean class in provided `ApplicationContext` to look up a Spring bean.
    `String` | `resourceName` Resource bean name in provided `ApplicationContext` to look up a Spring bean.

- - ### Element Detail

    - #### resourceName

          public abstract String resourceName

      Resource bean name in provided `ApplicationContext` to look up a Spring bean.
      Returns:
        Resource bean name.
      Default:
        ""

  - - #### resourceClass

          public abstract Class<?> resourceClass

      Resource bean class in provided `ApplicationContext` to look up a Spring bean.
      Returns:
        Resource bean class.
      Default:
        org.apache.ignite.resources.SpringResource.DEFAULT.class

  - - #### required

          public abstract boolean required

      Determines whether the injection procedure should fail in case no beans with specified name or type are present in the Spring Context.
      Returns:
        Whether absence of the bean with specified parameters will result in `NoSuchBeanDefinitionException`.
      Default:
        true

${current.year} Copyright © Apache Software Foundation
| Follow @ApacheIgnite
Ignite Database and Caching Platform | : ver. 2.16.0
Release Date | : December 15 2023