Java如何自定义注解(应用篇)

如何自定义注解
实现步骤

以SpringBoot的@Autowired为例,自定义一个@Autowired,实现依赖的自动注入

  1. 创建一个注解,添加四个必要的元注解

    @Retention(RetentionPolicy.RUNTIME) //运行时注解
    @Target(ElementType.FIELD) //作用于字段
    @Inherited
    @Documented
    public @interface MyAutowired {}
    
  2. 创建一个Controller类和一个Service类,将一个Service变量作为Controller的变量。

    public class MyController {
        @MyAutowired
        MyService myService;
    
        public void hello() {
        		myService.hello();}}
    
  3. 基于反射,实现依赖的注入

    public class Test {
        public static void main(String[] args) throws Exception{
            Class<MyController> clazz;
            clazz = (Class<MyController>) Class.forName("MyController");
            MyController controller = clazz.newInstance();
            Field[] fields = clazz.getDeclaredFields();
            Stream.of(fields).forEach(field -> {
                MyAutowired myAnno = field.getAnnotation(MyAutowired.class);
                if (myAnno != null) {
                    Class<?> fieldType = field.getType();
                    try {
                        Object o1 = fieldType.newInstance();
                        field.set(controller, o1);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            controller.hello();
        }
    }
    
  4. 通过以上代码,可以实现外部注入依赖,调用controller的hello方法可以正常运行

如何简单理解注解

官方定义:

  1. Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
  2. Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容
  3. java 支持自定义 Java 标注。

个人理解

  1. 注解就相当于是标签,可以作用在类、方法等元素上,也就是说,这些元素都可以打标签。
  2. 注解的作用和标签也类似,相当于是特征属性。所以,当需要对某些java成员打标签,做特殊备注,就可以使用注解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值