# annotation-learn **Repository Path**: flowerAndJava/annotation-learn ## Basic Information - **Project Name**: annotation-learn - **Description**: 看着代码学习注解! - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-05-11 - **Last Updated**: 2023-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # annotation-learn ## 一 介绍 看着代码学习注解! ### 代码 getting-started模块 com.haopt.annotation.definition包 自定义注解代码 getting-started模块 com.haopt.annotation.meta 元注解对自定义注解修饰 springboot模块,springboot项目开发中常用的依赖 elasticjob-springboot-starter模块,自定义elastic-job启动动类,用于springboot集成。 elasticjob-test模块,用于测试分布式调度。 ### 知识点 下方文档 ## 二 自定义注解 **1. 概述** 注解是对程序进行标注和解释。给编译器看。使代码更加简洁。 **2. 常见注解** @Override 重写父类方法 @Deprecated 雍余方法上,表示方法已经过期 **3. 自定义注解(看代码理解)** public @interface 注解名称 { public 属性类型 属性名() default 默认值 ; } ****备注**** 属性类型 基本数据类型、String、class、注解、枚举、以上类型一维数组。 属性没有默认值,必须手动赋值。 **4. 元注解** 描述注解的注解 **5. 常用的元注解(详细查看代码)** @Target 指定注解在哪使用 @Retention 注解生存时间 @Inherited 自定义注解是否可以被子类继承 ## 三 SpringBoot中常用的注解 **1. 获取配置文件中的属性(详细使用看代码。springboot模块 com.haopt.annotation.obtain包)** @value、@ConfigurationProperties(prefix = "data")、@Configuration+@Bean,用来获取配置文件中属性 **2. 条件注解** @Conditional(Class) 根据继承Condition类的matches方法返回true创建对象 @ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean @ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean @ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean **3. enable开头注解(自定义注解)** 底层会依赖@Import,@Import注解加载类,这些类会被Spring创建,并放到容器中。 ****备注:**** SpringBoot项目启动类的@SpringBootApplication含有@ComponentScan注解,@ComponentScan注解只会扫描本报下和子包下注解。 所以当导入另外一个项目依赖,并不能将bean对象加入到IOC容器中。 ****@Import(类名.class)提供四种导入方法**** 导入bean 导入配置类 可以将配置类中@Bean导入到Spring IOC容器中。 导入ImportSelector实现类 将返回值全类名数据全部导入到IOC容器中。 导入ImportBeanDefinitionRegistrar实现类 在实现方法将类导入到IOC容器中。 **4. SpringBoot自动装配对象** @SpringBootApplication -> @EnableAutoConfiguration -> @Import({AutoConfigurationImportSelector.class}) -> selectImports(AnnotationMetadata annotationMetadata) -> getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, AnnotationMetadata annotationMetadata) -> META-INF/spring.factories(配置文件) -> 加载配置文件中的类 **获取Java相关,请扫描二维码(公众号)** ![公众号](https://images.gitee.com/uploads/images/2021/0517/114318_529a43da_8390550.png "屏幕截图.png")