JAXB的XmlElement注解

依赖

  • 如果基于JAX-WS开发,可以在maven工程的pom.xml文件中增加如下依赖,会将依赖的JAXB库也下载下来:
<dependency><groupId>jakarta.xml.ws</groupId><artifactId>jakarta.xml.ws-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>com.sun.xml.ws</groupId><artifactId>jaxws-rt</artifactId><version>4.0.0</version>        
</dependency>
  • 如果只想使用JAXB库,可以在maven工程的pom.xml文件中增加如下依赖:
<dependency><groupId>jakarta.xml.bind</groupId><artifactId>jakarta.xml.bind-api</artifactId><version>4.0.0</version>
</dependency>
<dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>4.0.3</version>
</dependency>

XmlElement注解可以用在什么地方

XmlElement注解可以用在Java的属性上

备注: 如果XmlElement注解用在Java的属性上,该属性就不能出现getter和setter方法,否则运行出错

例如,下面片段XmlElement注解的属性name = "flag"指定了映射到xml中元素的名字是flag。如果不指定,xml元素的名字就会是functionCode

@XmlElement(name = "flag")
private int functionCode;

XmlElement注解可以用在属性的getter方法上

例如:

@XmlElement(name = "flag")
public int getFunctionCode() {return this.functionCode;
}

我感觉这种方法是灵活的,原因:

  • XmlElement注解用在属性的getter方法上,既能够修改映射到xml中的元素的名称,也方便在代码中设置属性。因为如果类的属性很多的话,直接用构造函数感觉太长了。
  • 如果直接注解在属性上,尽管也可以修改映射到xml中的元素的名称,但设置属性的值就必须用类的构造函数,不太方便。原因就是如果映射到属性上,那么该类属性就不能出现getter和setter方法,否则运行出错。

例如,下面用在getFunctionCode()方法上,设置了了映射到xml中的元素名称是flag

private int functionCode;@XmlElement(name = "flag")
public int getFunctionCode() {return this.functionCode;
}public void setFunctionCode(int functionCode) {this.functionCode = functionCode;
}

在调用的地方设置属性的值:

RegisterResponse registerResponse = new RegisterResponse();
registerResponse.setFunctionCode(1);

如果 XmlElement注解用在属性上,同时类中有针对该属性的getter和setter方法,是会出错的

例如,下面这段代码,XmlElement注解用在属性functionCode上,同时,有针对functionCode的getFunctionCode和setFunctionCode方法,运行就会出错,提醒有两个属性具有相同的名称(为了突出重点,调用的代码没有贴出来):

package com.thb.server.register;import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "response")
public class RegisterResponse {@XmlElement(name = "flag")private int functionCode;public RegisterResponse() {}public int getFunctionCode() {return this.functionCode;}public void setFunctionCode(int functionCode) {this.functionCode = functionCode;}    
}

运行出错:
在这里插入图片描述

XmlElement注解的属性

required属性

如果没有设置为true,那么对于JavaJavabean映射到XML schema的元素声明会有minOccurs=“0”。

Java的字符串属性不设置、设置XmlElement注解的 required属性

  • 例如,Java的字符串属性secret,没有设置XmlElement注解的 required属性:
private String secret;@XmlElement(name="secret")
public String getSecret() {return this.secret;
}

生成XML schema:
在这里插入图片描述

在生成的XML schema中,secret元素的minOccurs=“0”:
在这里插入图片描述

  • 设置XmlElement注解的 required = true
private String secret;@XmlElement(name="secret", required = true)
public String getSecret() {return this.secret;
}

生成XML schema:
在这里插入图片描述

在生成的XML schema中,secret元素没有minOccurs=“0”:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/198120.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis三种集群方式

redis有三种集群方式&#xff1a;主从复制&#xff0c;哨兵模式和集群。 1.主从复制 主从复制原理&#xff1a; 从服务器连接主服务器&#xff0c;发送SYNC命令&#xff1b; 主服务器接收到SYNC命名后&#xff0c;开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所…

后端技术知识点内容-全部内容-面试宝典-后端面试知识点

文章目录 -2 flink-1 linux of viewlinux查看占用cup最高的10个进程的命令&#xff1b; 〇、分布式锁 & 分布式事务0-1分布式锁--包含CAP理论模型概述分布式锁&#xff1a;分布式锁应该具备哪些条件&#xff1a;分布式锁的业务场景&#xff1a; 分布式锁的实现方式有&#…

【MySQL--->用户管理】

文章目录 [TOC](文章目录) 一、用户管理表二、基本操作三、用户权限分配给用户某个数据库中某个表的某个权限. grant 权限 on 库.表名 to 用户名主机名. ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe8eb171ef9343c3a09bd64d4f0db5c1.png)分配给用户某个数据库中全部表…

python中Thread实现多线程任务

目录 多线程概括&#xff1a; 使用 Thread 模块创建线程 如果不使用多线程&#xff1a; 多线程概括&#xff1a; 多线程是一种并发执行的编程方式&#xff0c;允许程序同时执行多个独立的线程&#xff0c;每个线程在程序中运行独立的任务。每个线程都是程序的基本执行单元&a…

全新酷盒9.0源码:多功能工具箱软件的最新iapp解决方案

全能工具箱软件酷盒&#xff1a;源码提供iapp解决方案&#xff0c;自定义打造个性化体验 酷盒是一款功能丰富的工具箱软件&#xff0c;内置众多实用功能&#xff0c;并实时更新热门功能。该软件还拥有丰富的资源库&#xff0c;用户可以在线畅玩游戏、免费下载音乐等。 我们提…

k8s的高可用集群搭建,详细过程实战版

kubernetes高可用集群的搭建 前面介绍过了k8s单master节点的安装部署 今天介绍一下k8s高可用集群搭建 环境准备&#xff1a; vip &#xff1a;192.168.121.99 keeplive master01&#xff1a;192.168.121.153 centos7 master02&#xff1a;192.168.121.154 centos7 master03&a…

MongoDB相关基础操作(库、集合、文档)

文章目录 一、库的相关操作1、查看数据库2、查看当前库3、创建数据库4、删除数据库 二、集合的相关操作1、查看库中所有集合2、创建集合2.1、显示创建2.2、隐式创建 3、删除集合 三、文档的相关操作1、插入文档1.1、插入单条文档1.2、插入多条文档1.3、脚本方式 2、查询文档3、…

深入理解注意力机制(下)——缩放点积注意力及示例

一、介绍 在这篇文章中&#xff0c;我们将重点介绍 Transformer 背后的 Scaled Dot-Product Attention&#xff0c;并详细解释其计算逻辑和设计原理。 在文章的最后&#xff0c;我们还会提供一个Attention的使用示例&#xff0c;希望读者看完后能够对Attention有更全面的了解。…

gRPC 四模式之 双向流RPC模式

双向流RPC模式 在双向流 RPC 模式中&#xff0c;客户端以消息流的形式发送请求到服务器端&#xff0c;服务器端也以消息流的形式进行响应。调用必须由客户端发起&#xff0c;但在此之后&#xff0c;通信完全基于 gRPC 客户端和服务器端的应用程序逻辑。 为什么有了双向流模式…

Windows安装Vmware 虚拟机

目录 一、Vmware 虚拟机介绍 二、Vmware 虚拟机的三种网络模式 2.1桥接模式 2.2仅主机模式 2.3NAT 网络地址转换模式 三、Vmware 虚拟机的安装 一、Vmware 虚拟机介绍 VMware Workstation Pro 是一款可以在个人电脑的操作系统上创建一个完全与主机操作系统隔离的 虚拟机&…

Vite - 静态资源处理 - json文件导入

直接就说明白了 vite 中对json 文件直接当作一个模块来解析。 可以直接导入使用&#xff01; 可以直接导入使用&#xff01; 可以直接导入使用&#xff01;json文件中的key&#xff0c;直接被作为一个属性&#xff0c;可以单独被导入。 因此&#xff0c;导入json文件有两种方式…

特效!视频里的特效在哪制作——Adobe After Effects

今天&#xff0c;我们来谈谈一款在Adobe系列中推出的一款图形视频处理软件&#xff0c;适用于从事设计和视频特技的机构&#xff0c;包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室的属于层类型后期软件——Adobe After Effects。 Adobe After Effects&#xf…

WPF中行为与触发器的概念及用法

完全来源于十月的寒流&#xff0c;感谢大佬讲解 一、行为 (Behaviors) behaviors的简单测试 <Window x:Class"Test_05.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winf…

nodejs+vue慢性胃炎健康管理系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于慢性胃炎健康管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了慢性胃炎健康管理系统&#xff0c; 系统首页、个…

蓝桥杯单片机综合练习——工厂灯光控制

一、题目 二、代码 #include <reg52.h>sfr AUXR 0x8e; //定义辅助寄存器sbit S5 P3^2; //定义S5按键引脚 sbit S4 P3^3; //定义S4按键引脚unsigned char led_stat 0xff; //定义LED当前状态 unsigned char count 0; //定义50ms定时中断累…

GitHub如何删除仓库

GitHub如何删除仓库 删除方法第一步第二步第三步 删除方法 第一步 在仓库的界面选择Settings 第二步 选择General,页面拉到最后。 第三步 后续按照导向删除仓库即可。

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…

论文阅读——DiffusionDet

在目标检测上使用扩散模型 前向过程&#xff1a;真实框-->随机框 后向过程&#xff1a;随机框-->真实框 前向过程&#xff1a; 一般一张图片真实框的数目不同&#xff0c;填补到同一的N个框&#xff0c;填补方法可以是重复真实框&#xff0c;填补和图片大小一样的框&a…

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中&#xff0c;我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章&#xff0c;我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了&#xff0c;据我所知&#xff0c;处理…

在Java代码中指定用JAXB的XmlElement注解的元素的顺序

例如&#xff0c;下面的类RegisterResponse 使用了XmlRootElement注解&#xff0c;同时也使用XmlType注解&#xff0c;并用XmlType注解的propOrder属性&#xff0c;指定了两个用XmlElement注解的元素出现的顺序&#xff0c;先出现flag&#xff0c;后出现enterpriseId&#xff0…