SPRING-注解整理(持续整理ing~)
1、@inherited
@Inherited 注解定义在Java的java.lang.annotation包中,是Java标准库的一部分。它用于修饰注解,以改变这些注解的默认继承行为。
默认情况下,Java中的注解是不被继承的。也就是说,如果一个类上使用了某个注解,那么它的子类不会自动继承这个注解。但是,通过使用@Inherited注解来修饰某个注解,可以使得这个注解具有被继承的特性。
当一个注解被@Inherited修饰后,如果一个类上使用了这个注解,那么它的所有子类(直接子类和间接子类)都会继承这个注解。但是,需要注意的是,这种继承行为仅适用于类级别的注解,不适用于方法、字段或构造函数级别的注解。此外,接口上的注解即使被@Inherited修饰,其实现类也不会继承这个注解。
2、@interface
@interface 在Java编程语言中是一个关键字,它用于定义一个注解(Annotation)。注解是一种应用于类、方法、参数、变量、构造器和包等Java元素的特殊标记,这些标记可以在编译时、加载时或运行时被访问,并被用于为这些元素提供元数据。
以下是关于@interface的一些关键点:
定义注解:
使用@interface关键字可以定义一个注解。注解的名称通常使用大写字母开头,以区别于接口(interface)和其他Java标识符。
元素(Element):
注解内部可以定义一些元素(也称为成员变量),这些元素在注解被使用时需要提供值。元素可以有默认值,也可以没有默认值。元素的类型通常是基本数据类型、String、Class、enum、注解类型、以及这些类型的数组。
元注解(Meta-Annotation):
注解本身也可以被注解,这些用于注解其他注解的注解被称为元注解。Java提供了几个内置的元注解,包括@Retention、@Target、@Documented、@Inherited和@Repeatable。
@Retention:指定注解的保留策略,可以是SOURCE(只在源码中保留,编译时被丢弃)、CLASS(在源码和.class文件中保留,但在运行时不会被VM保留)或RUNTIME(在源码、.class文件和运行时都保留,因此可以通过反射访问)。
@Target:指定注解可以应用的Java元素类型,如类、方法、字段等。
@Documented:指示带有该注解的元素应该被javadoc工具记录。
@Inherited:使注解具有继承性,但仅适用于类级别的注解。
@Repeatable:指示注解可以重复应用在同一元素上。
使用注解:
注解是通过在目标元素前加上@符号和注解名称来使用的。如果注解有元素,则需要在注解名称后的括号中提供元素的值。如果元素有默认值,则可以省略该元素的值。
处理注解:
注解本身不直接影响操作,它们需要通过某种方式被读取和处理。这通常是通过使用Java反射API来实现的。在运行时,可以检查类、方法、字段等上的注解,并根据这些注解的值来执行特定的逻辑。
3、@order()
在Java中,@Order 注解通常不是Java标准库的一部分,而是由Spring框架或其他一些框架提供的。它用于定义组件(如Bean、配置类、方法等)的加载或执行顺序。
@Order 注解接受一个整数作为参数,这个整数表示组件的优先级。数值越小,优先级越高,组件将越早被加载或执行。如果两个组件具有相同的顺序值,则它们的加载或执行顺序是不确定的。
当你看到 @Order(2) 这样的注解时,它意味着被注解的组件具有一个相对较低的优先级(假设其他组件可能使用了更小的数字,如 @Order(1))。
4、@ApiOperation("XX")
ApiOperation 注解是 Swagger 框架提供的一个注解,主要用于为 RESTful 接口添加描述信息,在接口文档生成时,能让开发人员、测试人员等更好地理解接口的用途、功能等。主要作用
接口描述:为每个 RESTful 接口提供详细的文本描述,使接口的功能和用途一目了然。
文档生成:在生成接口文档时,这些描述信息会展示在文档中,方便团队成员或外部开发者查阅。
可读性提升:提高代码的可读性和可维护性,让其他开发者快速理解接口的设计意图。
常用属性
value:接口的简短描述,通常是一句话概括接口的主要功能。
notes:接口的详细描述,可用于补充更多信息。
response:指定接口的返回类型,用于文档中显示返回值的类型。
5、ApiImplicitParams
piImplicitParams 注解是Swagger框架中的一个重要功能,它主要用于描述方法或接口中的多个参数信息。以下是对@ApiImplicitParams注解的详细解释:
用途
在Swagger中,@ApiImplicitParams注解通常与@ApiImplicitParam注解一起使用。@ApiImplicitParam用于描述单个参数的信息,而@ApiImplicitParams则用于包围多个@ApiImplicitParam注解,从而方便地为方法或接口中的每个参数提供详细的描述和元数据信息。
参数
@ApiImplicitParams注解本身不接受任何参数,但它所包围的@ApiImplicitParam注解则包含多个参数,用于描述参数的各个方面,包括:
name:指定参数的名称(必需)。
value:对参数的简单描述(可选)。
dataType:指定参数的数据类型(必需)。
paramType:指定参数的类型,可以是path、query、body、header或form(必需)。这决定了参数在请求中的位置。
example:指定参数的示例值(可选)。
required:指定参数是否是必需的,默认为false(可选)。
defaultValue:指定参数的默认值(可选)。
使用场景
当你需要为RESTful API的某个方法或接口提供详细的参数描述时,可以使用@ApiImplicitParams和@ApiImplicitParam注解。这些描述信息将被Swagger工具读取并用于生成API文档,从而帮助API的使用者更好地理解每个参数的作用、类型、是否必填等信息。
6、@ApiIgnore
@ApiIgnore 注解是Swagger框架中的一个功能,它用于指示某个类或方法应该被Swagger文档生成工具忽略。当你使用Swagger来为你的RESTful API生成文档时,可能有些类或方法并不希望暴露给外部用户,或者它们只是用于内部测试或辅助功能,这时就可以使用@ApiIgnore注解来排除它们。
用途
@ApiIgnore注解的主要用途是控制Swagger文档的生成,确保只有那些对外部用户有意义的API才会被包含在文档中。这有助于提高文档的可读性和可用性,同时避免暴露不必要的内部细节。
用法
@ApiIgnore注解可以应用于类和方法上。当你将它应用于一个类上时,该类及其所有方法都会被Swagger忽略。当你将它应用于一个方法上时,只有该方法会被忽略。
7、@EqualsAndHashCode
@EqualsAndHashCode 是 Lombok 提供的一个注解,用于自动生成 equals() 和 hashCode() 方法。这两个方法是 Java 中用于对象比较和哈希表操作的重要方法。
@EqualsAndHashCode(callSuper = false) 是 @EqualsAndHashCode 的一个配置选项,表示在生成 equals() 和 hashCode() 方法时,不调用父类的 equals() 和 hashCode() 方法
如果当前类继承了父类,callSuper = false 表示在生成 equals() 和 hashCode() 时,不包含父类的字段。
如果设置为 callSuper = true,则会调用父类的 equals() 和 hashCode() 方法。
8、@Size()
@Size 是 Java 中用于 Bean 验证(Bean Validation)的一个注解,通常用于验证字符串、集合、数组等对象的长度或大小是否符合指定的范围。它是 Java Bean Validation API(JSR 380)的一部分,常用于 Spring Boot、Hibernate 等框架中。
- @Size 注解的作用
用于验证字符串的长度是否在指定范围内。
用于验证集合、数组、Map 等的大小是否在指定范围内。 - 常用属性
min:指定最小长度或大小(默认值为 0)。
max:指定最大长度或大小(默认值为 Integer.MAX_VALUE)。
message:自定义验证失败时的错误消息。
9、@ExcelIgnoreUnannotated()是 EasyExcel 中的注解,用于控制未标注字段的导出行为
忽略未标注字段:添加该注解后,EasyExcel 在导出时会跳过未使用 @ExcelProperty 等注解的字段,仅导出标注过的字段。
10、@TableField(exist = false)
@TableField(exist = false) 是 MyBatis-Plus 框架中的一个注解,用于标记实体类中的某个字段不是数据库表中的字段。
exist = false 表示该字段在数据库表中不存在,MyBatis-Plus 在进行数据库操作时会忽略该字段。
11、@NotNull() 和 @NotBlank()
@NotNull 和 @NotBlank 是 Java 中常用的注解(通常来自 Jakarta Bean Validation 或 Hibernate Validator),用于字段验证,但它们的用途和检查条件不同:
@NotNull
作用:仅检查字段是否为 null,不关心其他情况。
适用类型:适用于 所有类型(对象、集合、字符串等)。
验证失败示例:
String str = null; ❌(验证失败)
String str = ""; ✅(空字符串通过)
String str = " "; ✅(空白字符串通过)
List list = null; ❌(验证失败)
@NotBlank
作用:专用于字符串,检查字符串 不是 null、不是空字符串("")、不是纯空白字符串(" ")。
适用类型:仅适用于 String 类型。
验证失败示例:
String str = null; ❌
String str = ""; ❌
String str = " "; ❌
String str = "Hello"; ✅
12、@Slf4j
@Slf4j 是 Lombok 提供的注解,用于在类中自动生成一个 SLF4J(Simple Logging Facade for Java)的日志对象 log,开发者可以直接用它打印日志,而无需手动编写样板代码。
本文来自博客园,作者:skystrivegao,转载请注明原文链接:https://www.cnblogs.com/skystrive/p/18524965
整理不易,如果对您有所帮助 请点赞收藏,谢谢~