当前位置: 首页 > news >正文

Spring MVC小点

一、代码 Java 类  MessageInfo 使用了 Lombok 库的注解来简化代码(省去手动编写 getter、setter 方法的工作)

以下是详细解释:

 

1. Lombok 注解的作用

 

-  @Setter :为被注解的字段生成  setter  方法(用于给字段赋值)。

-  @Getter :为被注解的字段生成  getter  方法(用于获取字段值)。

-  @Data (代码中被注释了,原本可以用):是 Lombok 的“组合注解”,会同时生成  getter 、 setter 、 toString 、 equals 、 hashCode  等方法,能极大简化实体类代码。

 

2. 类与字段说明

 

- 类  MessageInfo :是一个普通的 Java 实体类,通常用于封装“消息相关的信息”。

- 字段  from :被  @Setter  注解,会生成  setFrom(String from)  方法,用于设置“消息发送者”。

- 字段  to :被  @Getter  注解,会生成  getTo()  方法,用于获取“消息接收者”。

- 字段  message :没有显式加  @Getter  或  @Setter (但如果类上用了  @Data ,会自动生成这两个方法),表示“消息内容”。

 

3. 代码简化效果

 

如果不用 Lombok,你需要手动写这样的代码:

 

java

public class MessageInfo {

    private String from;

    private String to;

    private String message;

 

    public void setFrom(String from) {

        this.from = from;

    }

 

    public String getTo() {

        return to;

    }

 

    // 还要给 from、message 写 getter,给 to、message 写 setter... 很繁琐

}

 

 

而用 Lombok 后,只需要加注解,就能自动生成这些方法,让代码更简洁~

 

二、Java 项目中  如MessageInfo  类编译后的字节码反编译文件( .class  文件),结合右侧Lombok代码片段,展示了使用 Lombok 注解后自动生成的方法。

- Lombok 注解的作用:

-  @Getter :为成员变量生成  getter  方法,用于获取变量值。

-  @Setter :为成员变量生成  setter  方法,用于设置变量值。

-  @ToString :生成  toString  方法,方便打印对象时显示对象的属性信息。

-  @AllArgsConstructor :生成包含所有成员变量的构造方法。

- 生成的方法:

-  setFrom 、 setTo 、 setMessage :分别是成员变量  from 、 to 、 message  的  setter  方法,用于给这些变量赋值。

-  toString :返回包含  from 、 to 、 message  变量值的字符串,便于查看对象内容。

- 还有一个包含  from 、 to 、 message  三个参数的构造方法,用于创建  MessageInfo  对象时直接为这三个变量赋值。

 

简单来说,Lombok 注解帮助我们自动生成了原本需要手动编写的 getter、setter、构造方法和 toString 方法,简化了代码编写。

 

三、这是 Spring Boot 项目中一个叫  MessageController  的控制器类,用于处理和“消息”相关的请求

下面分步解释:

1. 注解部分

 

-  @RequestMapping("/message") :表示这个控制器里的所有请求方法,都会映射到以  /message  开头的 URL 路径上。

-  @RestController :这是 Spring 的注解,它有两个作用,一是说明这个类是一个控制器,能处理 HTTP 请求;二是表示这个类里的方法返回的对象会直接转换成 JSON 等格式的数据,响应给客户端,而不是跳转页面。

 

2. 成员变量

 

java

private List<MessageInfo> messageInfoList = new ArrayList<>();

 

 

- 定义了一个类型为  List<MessageInfo>  的成员变量  messageInfoList ,并初始化为  ArrayList  类型。 MessageInfo  应该是一个实体类(用来表示消息信息,比如包含发信人、收信人、消息内容等属性)。这个列表可以用来存储多个  MessageInfo  对象,比如存储所有发布的消息。

 

3.  publish  方法

 

java

@RequestMapping("/publish")

public Boolean publish(@RequestBody MessageInfo messageInfo) {

    return false;

}

 

 

-  @RequestMapping("/publish") :表示当客户端访问  /message/publish  这个 URL 时,会调用  publish  方法。

-  @RequestBody :这个注解用于接收客户端发送过来的 JSON 格式的数据,并将其转换成  MessageInfo  对象。

- 方法返回  false ,目前这个方法只是一个框架,还没有实现真正的“发布消息”逻辑,所以暂时返回  false ,表示发布失败或者其他含义,后续可以在这个方法里添加将  messageInfo  存入 messageInfoList  等发布消息的逻辑。

 

四、这句话的意思是:创建一个“装消息的列表容器”,专门用来存放多个消息对象。

 

可以用生活中的例子理解:

 

例子1:微信聊天记录列表

 

-  MessageInfo  就像一条具体的微信消息(包含:谁发的、发给谁、内容是什么)

-  List<MessageInfo>  就像你的“聊天记录列表”(里面可以装很多条消息)

-  new ArrayList<>()  就是把这个“聊天记录列表”初始化(相当于创建一个空的笔记本,准备记录消息)

 

假设  MessageInfo  有三个属性: from (发信人)、 to (收信人)、 message (内容),实际使用时就像这样:

 

java

// 1. 创建消息列表(就像买了一个空的笔记本)

private List<MessageInfo> messageInfoList = new ArrayList<>();

 

// 2. 创建第一条消息(张三给李四发消息)

MessageInfo msg1 = new MessageInfo();

msg1.setFrom("张三");

msg1.setTo("李四");

msg1.setMessage("你好!");

 

// 3. 创建第二条消息(李四回复张三)

MessageInfo msg2 = new MessageInfo();

msg2.setFrom("李四");

msg2.setTo("张三");

msg2.setMessage("你好呀!");

 

// 4. 把消息放进列表(记到笔记本上)

messageInfoList.add(msg1);

messageInfoList.add(msg2);

 

// 现在列表里有2条消息,就像笔记本上记了2条聊天记录

 

 

例子2:班级留言板

 

-  MessageInfo  是一条留言(谁留的、留给谁、留言内容)

-  messageInfoList  就是整个留言板(可以贴很多条留言)

 

java

// 留言板初始化

private List<MessageInfo> messageInfoList = new ArrayList<>();

 

// 添加留言

messageInfoList.add(new MessageInfo("班长", "全体同学", "明天开会"));

messageInfoList.add(new MessageInfo("小明", "小红", "借我一支笔"));

 

// 现在留言板上有2条留言,需要时可以取出来查看

 

 

简单说: List<MessageInfo>  就是一个“消息集合”,可以批量存放、管理多条消息,就像用一个文件夹装很多文件一样。

 


文章转载自:

http://7gTJ08oC.pfntr.cn
http://feWpBLdn.pfntr.cn
http://TuaiRj92.pfntr.cn
http://ecBoreGv.pfntr.cn
http://tKiQOmp5.pfntr.cn
http://E2qLzHfz.pfntr.cn
http://d1OqAJ92.pfntr.cn
http://2UR9xN1l.pfntr.cn
http://eoovSGH5.pfntr.cn
http://f9twVAdQ.pfntr.cn
http://RRs5TXOw.pfntr.cn
http://d6DGUBfd.pfntr.cn
http://CqbqkUWI.pfntr.cn
http://9pxjWpYQ.pfntr.cn
http://7l6Hp6vJ.pfntr.cn
http://51qZBzIX.pfntr.cn
http://QMCSiUND.pfntr.cn
http://pFAv1RVI.pfntr.cn
http://aIHPdQGl.pfntr.cn
http://XpqdatV8.pfntr.cn
http://EzAL4iwZ.pfntr.cn
http://fiGVtGtr.pfntr.cn
http://l9SAr2Xy.pfntr.cn
http://lCe7nqv8.pfntr.cn
http://SNmxqRFn.pfntr.cn
http://7h8ZlJQ5.pfntr.cn
http://TlsXeXLT.pfntr.cn
http://NqxmNiRJ.pfntr.cn
http://nwIBAsMj.pfntr.cn
http://7jLyxBcv.pfntr.cn
http://www.dtcms.com/a/386545.html

相关文章:

  • SpringBoot的自动配置原理
  • 动力电池组半自动生产线:效率与灵活性的平衡之道|深圳比斯特自动化
  • 前端开发编辑器有哪些?常用前端开发编辑器推荐、前端开发编辑器对比与最佳实践分析
  • 【Linux】自动化构建工具——make/Makefile
  • Playwright MCP浏览器自动化教程
  • Linux 内存管理章节十四:多核世界的交通规则:深入Linux内存屏障与并发控制
  • .NET Core 中生成 JWT(JSON Web Token)
  • webRTc 为何深受直播实现的青睐?
  • iOS App 卡顿与性能瓶颈排查实战 如何定位CPU内存GPU帧率问题、优化耗电与网络延迟(uni-app开发性能优化全流程指南)
  • Tomcat的基本配置
  • Delphi6中实现PDF文件打印功能
  • 工作笔记-----基于FreeRTOS的lwIP网络任接收过程,从MAC至协议栈
  • ZipVoice小米语音合成-MacOS可运行
  • 技术驱动学术论文写作创新:以智能工具高效生成论文提纲为例
  • (笔记)进程间通讯
  • 电力行业数字化——解读麦肯锡企业数据架构数据治理架构设计规划【附全文阅读】
  • 如何搭建redis集群(docker方式非哨兵)
  • AWS Free Tier 2.0深度技术解析与实战指南
  • 深度学习-PyTorch基本使用
  • 飞书智能查询机器人搭建说明文档
  • 速通ACM省铜第六天 赋源码(MEX Count)
  • Python自动化测试·Selenium简单介绍
  • 腾讯云轻量服务器CentOSdocker报错信息
  • 玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏
  • Spring Cloud 注册中心:Eureka 与 Nacos 深度对比
  • 机器视觉检测中光源的作用以及分类
  • php7.4使用systemd服务器管理文件无法启动的解决办法
  • 机器视觉检测中工业相机的作用以及分类
  • MySQL 备份与还原
  • 5 分钟 SAE 极速部署 Dify,高效开发 AI 智能体应用