美文网首页
从自定义注解到手写elasticjob启动类

从自定义注解到手写elasticjob启动类

作者: 想回家种地的程序员 | 来源:发表于2021-05-14 11:46 被阅读0次

    01 任务点

    1. 了解常见注解

    2. 认识自定义注解

    3. 手写分布式任务调度(elasticjob启动类)

    4 .@SpringBootApplication自动装载对象流程

    备注
    想要更好了解注解,请查看开源源码https://gitee.com/flowerAndJava/annotation-learn

    02 介绍

    看着代码学习注解!

    代码

    getting-started模块 com.haopt.annotation.definition包 自定义注解代码

    getting-started模块 com.haopt.annotation.meta 元注解对自定义注解修饰

    springboot模块,springboot项目开发中常用的依赖

    elasticjob-springboot-starter模块,自定义elastic-job启动动类,用于springboot集成。

    elasticjob-test模块,用于测试分布式调度。

    知识点

    下方文档

    03 自定义注解

    1. 概述
    注解是对程序进行标注和解释。给编译器看。使代码更加简洁。

    2. 常见注解
    @Override 重写父类方法
    @Deprecated 用于方法上,表示方法已经过期

    3. 自定义注解(看代码理解)
    public @interface 注解名称 {
    public 属性类型 属性名() default 默认值 ;
    }
    备注
    属性类型
    基本数据类型、String、class、注解、枚举、以上类型一维数组。
    属性没有默认值,必须手动赋值。

    4. 元注解
    描述注解的注解

    5. 常用的元注解(详细查看代码)
    @Target 指定注解在哪使用
    @Retention 注解生存时间
    @Inherited 自定义注解是否可以被子类继承

    04 SpringBoot中常用的注解

    1. 获取配置文件中的属性(详细使用看代码。springboot模块 com.haopt.annotation.obtain包)
    @value、@ConfigurationProperties(prefix = "data")、@Configuration+@Bean,用来获取配置文件中属性

    2. 条件注解
    @Conditional(Class<? extends Condition>) 根据继承Condition类的matches方法返回true创建对象
    @ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean
    @ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean
    @ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean

    3. enable开头注解(自定义注解)
    底层会依赖@Import,@Import注解加载类,这些类会被Spring创建,并放到容器中。

    备注:
    SpringBoot项目启动类的@SpringBootApplication含有@ComponentScan注解,@ComponentScan注解只会扫描本包下和子包下注解。

    所以当导入另外一个项目依赖,并不能将bean对象加入到IOC容器中。

    4. @Import(类名.class)提供四种导入方法
    导入bean
    导入配置类: 可以将配置类中@Bean导入到Spring IOC容器中。
    导入ImportSelector实现类: 将返回值全类名数据全部导入到IOC容器中。
    导入ImportBeanDefinitionRegistrar实现类: 在实现方法将类导入到IOC容器中。

    5. SpringBoot自动装配对象
    @SpringBootApplication -> @EnableAutoConfiguration -> @Import({AutoConfigurationImportSelector.class}) -> selectImports(AnnotationMetadata annotationMetadata) -> getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, AnnotationMetadata annotationMetadata) -> META-INF/spring.factories(配置文件) -> 加载配置文件中的类

    相关文章

      网友评论

          本文标题:从自定义注解到手写elasticjob启动类

          本文链接:https://www.haomeiwen.com/subject/mmhqjltx.html