Package org.springframework.aop.aspectj.annotation

# Class BeanFactoryAspectInstanceFactory

java.lang.Object
org.springframework.aop.aspectj.annotation.BeanFactoryAspectInstanceFactory

All Implemented Interfaces:
  `Serializable`, `MetadataAwareAspectInstanceFactory`, `AspectInstanceFactory`, `org.springframework.core.Ordered`

Direct Known Subclasses:
  `PrototypeAspectInstanceFactory`

public class BeanFactoryAspectInstanceFactory extends Object implements MetadataAwareAspectInstanceFactory, Serializable
`AspectInstanceFactory` implementation backed by a Spring `BeanFactory`.

Note that this may instantiate multiple times if using a prototype, which probably won't give the semantics you expect. Use a `LazySingletonAspectInstanceFactoryDecorator` to wrap this to ensure only one new aspect comes back.

Since:
  2.0
Author:
  Rod Johnson, Juergen Hoeller
See Also:
  - `BeanFactory`
  - `LazySingletonAspectInstanceFactoryDecorator`
  - Serialized Form

## Field Summary

### Fields inherited from interface org.springframework.core.Ordered

`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

## Constructor Summary

Constructors
Constructor
Description
`BeanFactoryAspectInstanceFactory(org.springframework.beans.factory.BeanFactory beanFactory, String name)`
Create a BeanFactoryAspectInstanceFactory.
`BeanFactoryAspectInstanceFactory(org.springframework.beans.factory.BeanFactory beanFactory, String name, Class<?> type)`
Create a BeanFactoryAspectInstanceFactory, providing a type that AspectJ should introspect to create AJType metadata.

## Method Summary

Modifier and Type
Method
Description
`ClassLoader`
`getAspectClassLoader()`
Expose the aspect class loader that this factory uses.
`Object`
`getAspectCreationMutex()`
Get the best possible creation mutex for this factory.
`Object`
`getAspectInstance()`
Create an instance of this factory's aspect.
`AspectMetadata`
`getAspectMetadata()`
Get the AspectJ AspectMetadata for this factory's aspect.
`int`
`getOrder()`
Determine the order for this factory's target aspect, either an instance-specific order expressed through implementing the `Ordered` interface (only checked for singleton beans), or an order expressed through the `Order` annotation at the class level.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### BeanFactoryAspectInstanceFactory

public BeanFactoryAspectInstanceFactory(org.springframework.beans.factory.BeanFactory beanFactory, String name)
Create a BeanFactoryAspectInstanceFactory. AspectJ will be called to introspect to create AJType metadata using the type returned for the given bean name from the BeanFactory.

Parameters:
  `beanFactory` - the BeanFactory to obtain instance(s) from
  `name` - the name of the bean

### BeanFactoryAspectInstanceFactory

public BeanFactoryAspectInstanceFactory(org.springframework.beans.factory.BeanFactory beanFactory, String name, @Nullable Class<?> type)
Create a BeanFactoryAspectInstanceFactory, providing a type that AspectJ should introspect to create AJType metadata. Use if the BeanFactory may consider the type to be a subclass (as when using CGLIB), and the information should relate to a superclass.

Parameters:
  `beanFactory` - the BeanFactory to obtain instance(s) from
  `name` - the name of the bean
  `type` - the type that should be introspected by AspectJ (`null` indicates resolution through `BeanFactory.getType(java.lang.String)` via the bean name)

## Method Details

### getAspectInstance

public Object getAspectInstance()
Description copied from interface: `AspectInstanceFactory`
Create an instance of this factory's aspect.

Specified by:
  `getAspectInstance` in interface `AspectInstanceFactory`
Returns:
  the aspect instance (never `null`)

### getAspectClassLoader

@Nullable public ClassLoader getAspectClassLoader()
Description copied from interface: `AspectInstanceFactory`
Expose the aspect class loader that this factory uses.

Specified by:
  `getAspectClassLoader` in interface `AspectInstanceFactory`
Returns:
  the aspect class loader (or `null` for the bootstrap loader)
See Also:
  - `ClassUtils.getDefaultClassLoader()`

### getAspectMetadata

public AspectMetadata getAspectMetadata()
Description copied from interface: `MetadataAwareAspectInstanceFactory`
Get the AspectJ AspectMetadata for this factory's aspect.

Specified by:
  `getAspectMetadata` in interface `MetadataAwareAspectInstanceFactory`
Returns:
  the aspect metadata

### getAspectCreationMutex

@Nullable public Object getAspectCreationMutex()
Description copied from interface: `MetadataAwareAspectInstanceFactory`
Get the best possible creation mutex for this factory.

Specified by:
  `getAspectCreationMutex` in interface `MetadataAwareAspectInstanceFactory`
Returns:
  the mutex object (may be `null` for no mutex to use)

### getOrder

public int getOrder()
Determine the order for this factory's target aspect, either an instance-specific order expressed through implementing the `Ordered` interface (only checked for singleton beans), or an order expressed through the `Order` annotation at the class level.

Specified by:
  `getOrder` in interface `org.springframework.core.Ordered`
See Also:
  - `Ordered`
  - `Order`

### toString

public String toString()

Overrides:
  `toString` in class `Object`