最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA中@ApiModel和@ApiModelProperty注解實(shí)戰(zhàn)代碼

 更新時(shí)間:2024年03月25日 10:03:27   作者:碼農(nóng)研究僧  
這篇文章主要給大家介紹了關(guān)于JAVA中@ApiModel和@ApiModelProperty注解的相關(guān)資料,@ApiModel注解是用在接口相關(guān)的實(shí)體類上的注解,它主要是用來(lái)對(duì)使用該注解的接口相關(guān)的實(shí)體類添加額外的描述信息,常常和@ApiModelProperty注解配合使用,需要的朋友可以參考下

前言

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

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

<!-- 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類進(jìn)行標(biāo)注,表示這個(gè)類是一個(gè)Swagger模型(Model)。通常用于描述一個(gè)數(shù)據(jù)對(duì)象或DTO(Data Transfer Object)。

示例代碼:

import io.swagger.annotations.ApiModel;

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

深入其源碼:

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

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

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

2. @ApiModelProperty注解

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

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

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

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

import io.swagger.annotations.ApiModelProperty;

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

    @ApiModelProperty(value = "用戶名", 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í)體類如下:

@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è)備名稱
	*/
		@ApiModelProperty(value = "設(shè)備名稱")
		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;
	/**
	* 事故類別
	*/
		@ApiModelProperty(value = "事故類別")
		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類別中的類如下:

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

}

總結(jié) 

到此這篇關(guān)于JAVA中@ApiModel和@ApiModelProperty注解的文章就介紹到這了,更多相關(guān)JAVA中@ApiModel和@ApiModelProperty注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java常見(jiàn)的字符串拼接方式總結(jié)

    java常見(jiàn)的字符串拼接方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了java中常見(jiàn)的字符串拼接方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • SpringBoot項(xiàng)目中使用OkHttp獲取IP地址的示例代碼

    SpringBoot項(xiàng)目中使用OkHttp獲取IP地址的示例代碼

    OkHttp?是一個(gè)由?Square?開(kāi)發(fā)的高效、現(xiàn)代的?HTTP?客戶端庫(kù),用于?Android?和?Java?應(yīng)用程序,它支持?HTTP/2?和?SPDY?等現(xiàn)代網(wǎng)絡(luò)協(xié)議,并提供了多種功能和優(yōu)化,本文給大家介紹了SpringBoot項(xiàng)目中如何獲取IP地址,需要的朋友可以參考下
    2024-08-08
  • 使用 Java 開(kāi)發(fā) Gradle 插件的步驟

    使用 Java 開(kāi)發(fā) Gradle 插件的步驟

    這篇文章主要介紹了使用 Java 開(kāi)發(fā) Gradle 插件的步驟,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • java中ThreadLocal的基本原理

    java中ThreadLocal的基本原理

    本文講解了java中ThreadLocal的一些基本原理,文中關(guān)于ThreadLocal的原理講解的非常詳細(xì),感興趣的朋友一起看看吧
    2021-08-08
  • Java五種方法批量處理List元素的實(shí)現(xiàn)示例

    Java五種方法批量處理List元素的實(shí)現(xiàn)示例

    本文主要介紹了Java五種方法批量處理List元素的實(shí)現(xiàn)示例,包括傳統(tǒng)循環(huán)、函數(shù)式編程、Stream流、迭代器及第三方庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • 為什么阿里要慎重使用ArrayList中的subList方法

    為什么阿里要慎重使用ArrayList中的subList方法

    這篇文章主要介紹了為什么要慎重使用ArrayList中的subList方法,subList是List接口中定義的一個(gè)方法,該方法主要用于返回一個(gè)集合中的一段、可以理解為截取一個(gè)集合中的部分元素,他的返回值也是一個(gè)List。,需要的朋友可以參考下
    2019-06-06
  • idea與eclipse項(xiàng)目相互導(dǎo)入的過(guò)程(圖文教程)

    idea與eclipse項(xiàng)目相互導(dǎo)入的過(guò)程(圖文教程)

    這篇文章主要介紹了idea與eclipse項(xiàng)目相互導(dǎo)入的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java里volatile關(guān)鍵字是什么意思

    Java里volatile關(guān)鍵字是什么意思

    volatile具有synchronized關(guān)鍵字的“可見(jiàn)性”,但是沒(méi)有synchronized關(guān)鍵字的“并發(fā)正確性”,也就是說(shuō)不保證線程執(zhí)行的有序性。這篇文章主要介紹了Java里volatile關(guān)鍵字是什么意思的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問(wèn)題

    mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問(wèn)題

    這篇文章主要介紹了mybatisplus?selectOne查詢,有數(shù)據(jù),但返回為null問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • java字符串比較獲取字符串出現(xiàn)次數(shù)的示例

    java字符串比較獲取字符串出現(xiàn)次數(shù)的示例

    java獲取一個(gè)字符串在整個(gè)字符串出現(xiàn)的次數(shù),下面寫(xiě)出我的思路和二個(gè)實(shí)現(xiàn)方法,大家參考使用吧
    2014-01-01

最新評(píng)論

永仁县| 行唐县| 油尖旺区| 阳谷县| 两当县| 兴业县| 堆龙德庆县| 阿鲁科尔沁旗| 泰宁县| 长春市| 盐城市| 临武县| 卓尼县| 和田市| 沭阳县| 南木林县| 永定县| 大连市| 南充市| 邵阳市| 盐源县| 图片| 大新县| 金昌市| 涟源市| 隆安县| 仪征市| 罗定市| 微山县| 河曲县| 南充市| 轮台县| 南江县| 敖汉旗| 永顺县| 杭锦旗| 泰宁县| 朔州市| 鹤峰县| 嘉鱼县| 崇左市|