java注解(二)Annotation使用案例

Annotations仅仅是元数据,和业务逻辑无关。如果Annotations不包含业务逻辑,那么必须有人来实现这些逻辑。元数据的用户来做这个事情。Annotations仅仅提供它定义的属性(类/方法/包/域)的信息。Annotations的用户(同样是一些代码)来读取这些信息并实现必要的逻辑

以Rest请求为例

1、 建立一个注解:请求必须先登录

@Target({ ElementType.TYPE,ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginValidate {
 
         /**
          * 标识被调用的类,方法是否需要登录才能访问,false:不需要登录即可访问,true:需要登录才可方法,
          *
          * @return
          */
         booleanlogin() default true;
}</span>


2、在业务类上,使用注解

@Component
@Path("/test")
@Produces(value = MediaTypes.JSON_UTF_8)
public class TestController {
         @POST
   @Path("/test")
   @LoginValidate
   public Object test(@FormParam("passport") String passport) {
                          //做一些增删改查
         }
}


3、 发起请求时,过滤器判断注解

@Component
public class LoginValidateRequestFilterimplements ContainerRequestFilter {
         @Override
         @SuppressWarnings("rawtypes")
         publicvoid filter(ContainerRequestContext requestContext) throws IOException {
                  UriInfoui = requestContext.getUriInfo();
                  ResourceInfori = (ResourceInfo) ui;
                  Classclazz = ri.getResourceClass();
                  if(clazz == null) {
                          logger.error("RequestResourceClass not found!");
                          return;
                  }
                  LoginValidatevalidate = AnnotationUtils.findAnnotation(clazz, LoginValidate.class);
                  if(validate !=null && validate.login() == true) {
                          //判断是否登录
                  }
         }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值