Annotation Interface Around


Annotation stereotype to applied to other annotations to indicate the annotation provides Around advice.

Around advice decorates a method invocation such that the method can be intercepted via a MethodInterceptor

For example:


  @Around
  @Type(ExampleInterceptor.class)
  @Documented
  @Retention(RUNTIME)
   public @interface Example {
   }
 

Note that the annotation MUST be RetentionPolicy.RUNTIME and the specified Type must implement MethodInterceptor

Since:
1.0
Author:
Graeme Rocher
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    When using proxyTarget() on a Factory method if the returned bean features constructor arguments this can lead to undefined behaviour since it is expected with factory methods that the developer is responsible for constructing the object.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    If true the proxy cache and reuse the target.
    boolean
    If proxyTarget() is set to true then one can optionally set the value of hotswap to true in which case the proxy will implement the HotSwappableInterceptedProxy interface.
    boolean
    By default Micronaut will initialize the proxy target eagerly when the proxy is created.
    boolean
    By default Micronaut will compile subclasses of the target class and call super.foo(..) to invoke the original method since this is more efficient and allows proxied methods to work for calls from within the class.
  • Element Details

    • proxyTarget

      boolean proxyTarget

      By default Micronaut will compile subclasses of the target class and call super.foo(..) to invoke the original method since this is more efficient and allows proxied methods to work for calls from within the class.

      However certain cases it may be useful to be able to to instead proxy all public methods of the original implementation. By setting the value here to true the Interceptor can specify that it requires proxying of the class

      Generated subclasses will implement InterceptedProxy if this attribute is set to true

      Returns:
      True if the original implementation should be proxied. Defaults to false.
      See Also:
      Default:
      false
    • hotswap

      boolean hotswap

      If proxyTarget() is set to true then one can optionally set the value of hotswap to true in which case the proxy will implement the HotSwappableInterceptedProxy interface.

      Returns:
      True if the proxy should allow hotswap
      See Also:
      Default:
      false
    • lazy

      boolean lazy

      By default Micronaut will initialize the proxy target eagerly when the proxy is created. This is better for performance, but some use cases may require the bean to be resolved lazily (for example for resolving the bean from a custom scope).

      If proxyTarget() is set to true then one can optionally set the of lazy to true

      Returns:
      True if the proxy target should be resolved lazily
      Default:
      false
    • cacheableLazyTarget

      boolean cacheableLazyTarget
      If true the proxy cache and reuse the target.
      Returns:
      True if the proxy target should be cacheable
      Since:
      3.1.0
      Default:
      false
    • proxyTargetMode

      Sets the Around.ProxyTargetConstructorMode. See the javadoc for Around.ProxyTargetConstructorMode for more information.
      Returns:
      The Around.ProxyTargetConstructorMode.
      Since:
      3.0.0
      See Also:
      Default:
      ERROR