@AroundInvoke、@AroundTimeout、@AroundConstruct源码翻译

package javax.interceptor;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;

import java.lang.annotation.Target;
import java.lang.annotation.Retention;

/**
 * 目的:注解一个拦截器方法
 * 
 * <p>定义一个插入业务方法上的拦截器方法。该方法具有以下特点:
 * 		a. 非final、非static;
 *      b. 单参数{@link javax.interceptor.InvocationContext}
 *      c. 返回类型Object类(如:目标类(或超类)、拦截器类)
 * 如下所示:
 *      @AroundInvoke
 *		public Object intercept(InvocationContext ctx) 
 *										throws Exception { ... }
 *
 * <p>一个类不能声明多个AroundInvoke方法。
 * 
 * <p>一个正在拦截的AroundInvoke方法可以调用任何组件或资源。
 * 
 * <p>注解AroundInvoke方法的调用与业务方法在相同的事务和安全上下文中发生。
 * 
 * <p>AroundInvoke方法可能抛出该方法的throws子句中的的任何异常。
 * 注解的方法可能会捕获和压制异常,并通过调用InvocationContext.proceed()来恢复。
 * @author TCM
 * @create 2017年11月10日上午11:09:52
 * @since  Interceptors 1.0 
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AroundInvoke {
}
package javax.interceptor;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;

import java.lang.annotation.Target;
import java.lang.annotation.Retention;

/**
 * 目的:定义一个拦截器的超时方法
 * 
 * <p>定义了一个拦截器方法,该方法在超时方法上进行交互。注解在任何非final、非static,
 * 一个参数类型javax.interceptor.InvocationContext,和返回类型目标类
 * (或超类)或任何拦截类的对象。例如:
 * 		@AroundTimeout
 *		public Object interceptTimeout(InvocationContext ctx) 
 *							throws Exception { ... }
 * 
 * <p>一个类不能声明多个AroundTimeout方法。
 * 
 * <p>AroundTimeout能调用任何组件或资源对应的超时方法。
 * 
 * <p>{@link javax.interceptor.InvocationContext#getTimer()}
 * 允许使用任何AroundTimeout方法检索与超时相关的计时器对象。
 * 
 * <p>在同一事务和安全上下文中,注解AroundTimeout方法作为超时方法被调用。
 * 
 * <p>AroundTimeout方法可能抛出该方法的throws子句中的的任何异常。
 * 注解的方法可能会捕获和压制异常,并通过调用InvocationContext.proceed()来恢复。
 * @author TCM
 * @create 2017年11月10日下午1:44:54
 * @since  Interceptors 1.1
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AroundTimeout {
}
package javax.interceptor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 目的:目标类初始化后,回调被@AroundConstruct注解的方法
 * 
 * <p>目标类构造函数被调用时,在回调@AroundConstruct注解的方法。
 * 
 * <p>该注解所应用的方法,必须具备下列条件之一:
 * 		@AroundConstruct
 *		public void <METHOD>(InvocationContext ctx) { ... }
 *
 *		@AroundConstruct
 *		public Object <METHOD>(InvocationContext ctx) throws Exception { ... }
 * 
 * <p>AroundConstruct拦截方法仅在拦截器类中声明。
 * 
 * <p>拦截类中不能声明多个AroundConstruct方法。
 * 
 * <p>AroundConstruct方法运行时抛出异常,并没有检查异常。
 * 
 * <p>目标实例被创建和执行构造函数注入,如果适用,在AroundConstruct拦截器链中的最后一个拦截器方法
 * 去调用{@link javax.interceptor.InvocationContext#proceed()}方法。
 * 
 * <p>一个AroundConstruct拦截器方法应该小心访问它所插入的构造函数实例。
 * @author TCM
 * @create 2017年11月13日下午1:46:51
 * @since  Interceptors 1.2
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AroundConstruct {
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值