注解类使用和说明

@zgcwkj  2019年05月28日

注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置等功能

新建一个(注解)类,然后更改内容为:

package com.zgcwkj;

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

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

// Retention注解决定注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
// Target注解决定注解可以加在哪些成分上
@Target({ ElementType.METHOD, ElementType.TYPE })
// 对不应再使用的方法进行注释,与正在声明为过时的方法放在同一行
@Documented
public @interface Authorization {
    
    public String str() default "";
}

使用方法 一(全部通用):

package com.zgcwkj;

import com.zgcwkj.config.warrant.Authorization;
import java.lang.reflect.Method;

@Authorization(str = "注释信息")
public class Test {
    public static void main(String[] args) throws Exception {
        // 如果类名上有注解修饰,则为true
        if (Test.class.isAnnotationPresent(Authorization.class)) {
            System.out.println("类");

            // 获取方法注解上的信息
            Authorization authorization = Test.class.getAnnotation(Authorization.class);
            String str = authorization.str();
            System.out.println(str);
        }

        Method method = Test.class.getMethod("toTest");
        // 如果类名上有注解修饰,则为true
        if (method.isAnnotationPresent(Authorization.class)) {
            System.out.println("方法");

            // 获取方法注解上的信息
            Authorization authorization = method.getAnnotation(Authorization.class);
            String str = authorization.str();
            System.out.println(str);
        }
    }

    @Authorization(str = "注释信息方法")
    public void toTest() {
        System.out.println("hello world");
    }
}

使用方法 二(SpringAOP 中可用):

package com.zgcwkj;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AOPAuthorization {

    @Around(value = "@annotation(authorization)")
    public Object around(ProceedingJoinPoint pjp, Authorization authorization) throws Throwable {
        // 注解信息
        String str = authorization.str();
        Object result = pjp.proceed();
        return result;
    }
}

相关类似推荐:C# 特性类使用和说明



添加新评论

Top