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
`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

2015 Copyright © Apache Software Foundation

Follow @ApacheIgnite

Ignite Fabric | : ver. 1.8.0
Release Date | : December 5 2016