国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

詳解JAVA中的@ApiModel和@ApiModelProperty注解

這篇具有很好參考價(jià)值的文章主要介紹了詳解JAVA中的@ApiModel和@ApiModelProperty注解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

在Java中,@ApiModel和@ApiModelProperty是Swagger框架(用于API文檔的工具)提供的注解,用于增強(qiáng)API文檔的生成和展示。這兩者搭配使用更佳

使用兩者注解,需導(dǎo)入swagger的依賴(lài)包:

<!-- https://mvnrepository.com/artifact/io.swagger.core.v3/swagger-annotations -->
<dependency>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>2.2.19</version>
</dependency>

主要作用:開(kāi)發(fā)者對(duì)API的模型和屬性進(jìn)行詳細(xì)的描述,以便生成清晰的API文檔。

1. @ApiModel注解

  • @ApiModel注解用于對(duì)Java類(lèi)進(jìn)行標(biāo)注,表示這個(gè)類(lèi)是一個(gè)Swagger模型(Model)。通常用于描述一個(gè)數(shù)據(jù)對(duì)象或DTO(Data Transfer Object)。

示例代碼:

import io.swagger.annotations.ApiModel;

@ApiModel(description = "用戶(hù)信息")
public class User {
    // 類(lèi)的屬性...
}

深入其源碼:

package io.swagger.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ApiModel {
    String value() default "";

    String description() default "";

    Class<?> parent() default Void.class;

    String discriminator() default "";

    Class<?>[] subTypes() default {};

    String reference() default "";
}

源碼中的注解可看出:

  • @Target注解
    用于指定自定義注解可以應(yīng)用的程序元素類(lèi)型,參數(shù)是一個(gè)ElementType數(shù)組。該源碼表示應(yīng)用在類(lèi)上
  • @Retention注解
    用于指定自定義注解的生命周期,即注解在程序運(yùn)行時(shí)的保留策略。該源碼表示運(yùn)行時(shí)
  • @Inherited注解
    子類(lèi)會(huì)繼承該注解。默認(rèn)情況下,注解不會(huì)被子類(lèi)繼承。

對(duì)應(yīng)的屬性值為:

  • value屬性:屬性值,也就是該實(shí)體類(lèi)的描述值,不寫(xiě)默認(rèn)為實(shí)體類(lèi)的名稱(chēng),通常描述不清晰才需要value值
  • description屬性:描述值,與value不同,該description為較長(zhǎng)描述值
  • parent屬性:用于指定被注解類(lèi)的父類(lèi)
  • discriminator屬性:多態(tài)情境區(qū)分多個(gè)子類(lèi)
  • subTypes屬性:指定被注解類(lèi)的子類(lèi)
  • reference屬性:提供對(duì)被注解類(lèi)的引用信息

2. @ApiModelProperty注解

  • @ApiModelProperty注解用于對(duì)Java類(lèi)的屬性進(jìn)行標(biāo)注,表示這個(gè)屬性是一個(gè)Swagger模型的屬性。它可以用于描述屬性的名稱(chēng)、說(shuō)明、數(shù)據(jù)類(lèi)型等信息
import io.swagger.annotations.ApiModelProperty;

public class User {
    @ApiModelProperty(value = "用戶(hù)ID", example = "123")
    private Long id;

    @ApiModelProperty(value = "用戶(hù)名", example = "john_doe")
    private String username;

    // 其他屬性...
}

深入其源碼:

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiModelProperty {
    String value() default "";

    String name() default "";

    String allowableValues() default "";

    String access() default "";

    String notes() default "";

    String dataType() default "";

    boolean required() default false;

    int position() default 0;

    boolean hidden() default false;

    String example() default "";

    /** @deprecated */
    @Deprecated
    boolean readOnly() default false;

    AccessMode accessMode() default ApiModelProperty.AccessMode.AUTO;

    String reference() default "";

    boolean allowEmptyValue() default false;

    Extension[] extensions() default {@Extension(
    properties = {@ExtensionProperty(
    name = "",
    value = ""
)}
)};

    public static enum AccessMode {
        AUTO,
        READ_ONLY,
        READ_WRITE;

        private AccessMode() {
        }
    }
}

其屬性如下:

  • value屬性
    注解的默認(rèn)屬性,理解為注釋的作用
  • name屬性
    指定屬性或方法的名稱(chēng),重寫(xiě)該屬性名字
  • allowableValues屬性
    指定屬性或方法的可接受值范圍。
  • access屬性
    指定屬性或方法的訪(fǎng)問(wèn)規(guī)則。
  • notes屬性:
    提供對(duì)屬性或方法的額外說(shuō)明。
  • dataType屬性:
    指定屬性或方法的數(shù)據(jù)類(lèi)型。
  • required屬性:
    指定屬性或方法是否為必需。
  • position屬性:
    指定屬性或方法在文檔中的位置。
  • hidden屬性:
    指定屬性或方法是否應(yīng)該在文檔中隱藏。
  • example屬性:
    提供屬性或方法的示例值。
  • readOnly屬性(已過(guò)時(shí)):
    指定屬性或方法是否為只讀。已過(guò)時(shí),推薦使用 access 屬性。
  • accessMode屬性:
    指定訪(fǎng)問(wèn)模式,可以是 AUTO、READ_ONLY 或 READ_WRITE。
  • reference屬性:
    提供屬性或方法的引用信息。
  • allowEmptyValue屬性:
    指定屬性或方法是否允許為空值。
  • extensions屬性:
    指定屬性或方法的擴(kuò)展信息,支持一組擴(kuò)展屬性。
  • AccessMode枚舉:
    屬性或方法的訪(fǎng)問(wèn)模式,包括 AUTO、READ_ONLY 和 READ_WRITE。

下面是一個(gè)簡(jiǎn)單的示例代碼:

import io.swagger.annotations.ApiModelProperty;

public class Example {
    @ApiModelProperty(value = "用戶(hù)ID", example = "123", required = true)
    private Long userId;

    @ApiModelProperty(value = "用戶(hù)名", example = "碼農(nóng)研究僧", readOnly = true)
    public String getUsername() {
        return "碼農(nóng)研究僧";
    }
}

3. 實(shí)戰(zhàn)

比如應(yīng)用在技術(shù)行業(yè)的某個(gè)模塊,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的entity實(shí)體類(lèi)如下:

@Data
@TableName("equipment_accident_record")
@ApiModel(value = "AccidentRecord對(duì)象", description = "AccidentRecord對(duì)象")
public class AccidentRecord extends BaseEntity {

	private static final long serialVersionUID = 1L;

	/**
	* 設(shè)備編號(hào)
	*/
		@ApiModelProperty(value = "設(shè)備編號(hào)")
		private String equipmentNo;
	/**
	* 設(shè)備名稱(chēng)
	*/
		@ApiModelProperty(value = "設(shè)備名稱(chēng)")
		private String equipmentName;
	/**
	* 設(shè)備機(jī)種
	*/
		@ApiModelProperty(value = "設(shè)備機(jī)種")
		private String model;
	/**
	* 事故日期
	*/
		@ApiModelProperty(value = "事故日期")
		private String dateTime;
	/**
	* 操作者
	*/
		@ApiModelProperty(value = "操作者")
		private String operator;
	/**
	* 事故經(jīng)過(guò)
	*/
		@ApiModelProperty(value = "事故經(jīng)過(guò)")
		private String content;
	/**
	* 損壞情況
	*/
		@ApiModelProperty(value = "損壞情況")
		private String situation;
	/**
	* 事故原因
	*/
		@ApiModelProperty(value = "事故原因")
		private String reason;
	/**
	* 事故類(lèi)別
	*/
		@ApiModelProperty(value = "事故類(lèi)別")
		private String type;
	/**
	* 損失費(fèi)用
	*/
		@ApiModelProperty(value = "損失費(fèi)用")
		private String expense;
	/**
	* 處理意見(jiàn)
	*/
		@ApiModelProperty(value = "處理意見(jiàn)")
		private String opinion;
	/**
	* 主管技術(shù)員
	*/
		@ApiModelProperty(value = "主管技術(shù)員")
		private String technician;


}

其前端vo類(lèi)別中的類(lèi)如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-809500.html

@Data
@ApiModel(value = "AccidentRecordVO對(duì)象", description = "AccidentRecordVO對(duì)象")
public class AccidentRecordVO extends AccidentRecord {
	private static final long serialVersionUID = 1L;

}

到了這里,關(guān)于詳解JAVA中的@ApiModel和@ApiModelProperty注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring中的@Value注解詳解

    Spring中的@Value注解詳解

    概述 本文配置文件為yml文件 在使用spring框架的項(xiàng)目中,@Value是經(jīng)常使用的注解之一。其功能是將與配置文件中的鍵對(duì)應(yīng)的值分配給其帶注解的屬性。在日常使用中,我們常用的功能相對(duì)簡(jiǎn)單。本文使您系統(tǒng)地了解@Value的用法。 @Value 注解可以用來(lái)將外部的值動(dòng)態(tài)注入到 Bean

    2024年02月06日
    瀏覽(18)
  • Java中的注解,自定義注解

    Java中的注解,自定義注解

    框架 = 注解 + 反射 + 設(shè)計(jì)模式 注解( Annotation )是從JDK5.0開(kāi)始引入,以“@注解名”在代碼中存在。 Annotation 可以像修飾符一樣被使用,可用于修飾包、類(lèi)、構(gòu)造器、方法、成員變量、參數(shù)、局部變量的聲明。還可以添加一些參數(shù)值,這些信息被保存在 Annotation 的 “name=valu

    2023年04月16日
    瀏覽(24)
  • Spring Boot 中的 @Field 注解詳解

    Spring Boot 中的 @Field 注解詳解

    Spring Boot 是目前 Java 生態(tài)圈中最受歡迎的 Web 應(yīng)用開(kāi)發(fā)框架之一,它提供了很多優(yōu)秀的功能和工具,可以幫助開(kāi)發(fā)者快速構(gòu)建高效、可靠的 Web 應(yīng)用程序。其中一個(gè)重要的功能就是數(shù)據(jù)綁定和驗(yàn)證,Spring Boot 提供了多種方式來(lái)綁定請(qǐng)求參數(shù)、表單數(shù)據(jù)、JSON 數(shù)據(jù)等。其中,@Fi

    2024年02月11日
    瀏覽(20)
  • 詳細(xì)分析Java中的@JsonFormat注解和@DateTimeFormat注解

    詳細(xì)分析Java中的@JsonFormat注解和@DateTimeFormat注解

    下文中涉及MybatisPlus的邏輯刪除的知識(shí),可看我之前這篇文章:詳細(xì)講解MybatisPlus實(shí)現(xiàn)邏輯刪除 對(duì)應(yīng)的Navicat設(shè)置數(shù)據(jù)庫(kù)最新時(shí)間可看我這篇文章:Navicat 設(shè)置時(shí)間默認(rèn)值(當(dāng)前最新時(shí)間) 為了使 @JsonFormat 生效,項(xiàng)目必須引入 Jackson 庫(kù)的相關(guān)依賴(lài): (如果是springboot項(xiàng)目,可不

    2024年01月23日
    瀏覽(19)
  • Java注解——@Override注解(詳解1)

    1、注解: 注解是 JDK 1.5 的特性 注解是給編譯器或 JVM 看的,編譯器或 JVM 可以根據(jù)注解來(lái)完成相應(yīng)的功能。 或者叫注釋類(lèi)型,英文是:Annotation 注解Annotation是一種引用數(shù)據(jù)類(lèi)型。編譯之后也是生成xxx.class文件。 注解的語(yǔ)法格式: 【修飾符列表】 @interface 注解類(lèi)型名{ } publ

    2024年02月03日
    瀏覽(45)
  • 一文詳解Java自定義注解

    一文詳解Java自定義注解

    目錄 簡(jiǎn)介 JDK注解 @Target @Retention @Documented @Inherited 第三方注解 自定義注解 舉例 默認(rèn)字符串注解 實(shí)現(xiàn)指定包名稱(chēng)掃描注解 注解( Annotation )是Java SE 5.0 版本開(kāi)始引入的概念,它是對(duì) Java 源代碼的說(shuō)明,是一種元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù))。 Java中的注解主要分為以下三類(lèi): JDK的

    2024年02月06日
    瀏覽(59)
  • Java注解編譯期處理AbstractProcessor詳解

    Java注解編譯期處理AbstractProcessor詳解

    我們接觸的注解主要分為以下兩類(lèi) 運(yùn)行時(shí)注解 :通過(guò)反射在運(yùn)行時(shí)動(dòng)態(tài)處理注解的邏輯 編譯時(shí)注解 :通過(guò)注解處理器在編譯期動(dòng)態(tài)處理相關(guān)邏輯 平時(shí)我們接觸的框架大部分都是運(yùn)行時(shí)注解,比如:@Autowire @Resoure @Bean 等等。 那么我們平時(shí)有接觸過(guò)哪些編譯期注解呢, @Lom

    2024年02月02日
    瀏覽(15)
  • java: 模塊循環(huán)不支持注解處理。請(qǐng)確保將循環(huán)中的所有模塊排除在注解處理之外

    java: 模塊循環(huán)不支持注解處理。請(qǐng)確保將循環(huán)中的所有模塊排除在注解處理之外

    java: 模塊循環(huán)不支持注解處理。請(qǐng)確保將循環(huán)中的所有模塊排除在注解處理之外 大概意思是有循環(huán)依賴(lài)問(wèn)題 解決方法: 選擇模塊依賴(lài)項(xiàng) 找到需要解決依賴(lài)的模塊分析依賴(lài),刪除不需要的依賴(lài) 如果出現(xiàn)其他問(wèn)題,再根據(jù)提示添加依賴(lài)即可

    2024年02月16日
    瀏覽(16)
  • Java中的反射(通過(guò)反射獲取類(lèi)的結(jié)構(gòu)、invoke方法、獲取注解)

    Java中的反射(通過(guò)反射獲取類(lèi)的結(jié)構(gòu)、invoke方法、獲取注解)

    創(chuàng)建運(yùn)行時(shí)類(lèi)的對(duì)象是反射機(jī)制應(yīng)用最多的地方。創(chuàng)建運(yùn)行時(shí)類(lèi)的對(duì)象有兩種方式: 方式1:直接調(diào)用Class對(duì)象的newInstance()方法 要求: 1)類(lèi)必須有一個(gè)無(wú)參數(shù)的構(gòu)造器。 2)類(lèi)的構(gòu)造器的訪(fǎng)問(wèn)權(quán)限需要足夠。 方式一的步驟 : 1)獲取該類(lèi)型的Class對(duì)象 2)調(diào)用Class對(duì)象的 new

    2024年02月04日
    瀏覽(28)
  • 【Java高級(jí)語(yǔ)法】(十三)注解:解碼程序設(shè)計(jì)中的元數(shù)據(jù)利器,在小小的@符里挖呀挖呀挖~用小小的注解做強(qiáng)大的開(kāi)發(fā)...

    【Java高級(jí)語(yǔ)法】(十三)注解:解碼程序設(shè)計(jì)中的元數(shù)據(jù)利器,在小小的@符里挖呀挖呀挖~用小小的注解做強(qiáng)大的開(kāi)發(fā)...

    Java 注解(Annotation) 是Java語(yǔ)言中一種元數(shù)據(jù)形式,它提供了一種在代碼中添加元數(shù)據(jù)的方式。注解為程序員提供了向代碼中添加額外信息的能力,這些額外信息可以被編譯器、工具或者運(yùn)行時(shí)環(huán)境使用。 優(yōu)點(diǎn): 提供了一種 更加簡(jiǎn)潔和可讀性強(qiáng) 的代碼編寫(xiě)風(fēng)格; 增強(qiáng)代碼的

    2024年02月10日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包