SpringBoot数据响应、分层解耦、三层架构

news2025/7/19 3:54:58

响应数据

@ResponseBody

  • 类型:方法注解、类注解
  • 位置:Controller方法、类上
  • 作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为json格式响应
  • 说明:@RestController = @Controller + @ResponseBody

统一响应结果

在这里插入图片描述

步骤 :

  • 获取员工数据,返回统一响应结果,在页面渲染展示

  • 在pom.xml文件中引入dom4j的依赖,用于解析xml文件
    在这里插入图片描述

  • 编写解析xml的工具类、对应的实体类、xml文件xxx.xml

  • 页面静态文件,放在resourcse下的static目录下

  • 编写Controller程序,处理请求,响应数据

注意

springboot项目的静态资源(html,css,js等前端资源)默认存放目录为:classpath:/static 、 classpath:/public 、classpath:/recourcse

分层解耦

三层架构 ----单一职责原则

在这里插入图片描述

  • controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
  • service:业务逻辑层,处理具体的业务逻辑
  • dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查
    在这里插入图片描述

例如:

在这里插入图片描述

分层解耦—高内聚低耦合

  • 内聚:软件中各个功能模块内部的功能联系
  • 耦合:衡量软件中各个层/模块之间的依赖、关联程度
    在这里插入图片描述
  • 控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想成为控制反转。
  • 依赖注入:Dependency Injection,简称DI。容器为应用程序提供运行时所依赖的资源,称之为依赖注入。
  • Bean对象:IOC容器中创建、管理的对象,称之为bean。

IOC&DI入门 ----步骤

  1. Service层及Dao层的实现类,交给IOC容器管理(控制反转)
    Dao层:
    在这里插入图片描述
    Service层:
    在这里插入图片描述

  2. 为Controller及Service注入运行时,依赖的对象(依赖注入)
    Controller层:
    在这里插入图片描述

    Service层:
    在这里插入图片描述

  3. 运行测试

@Component ----将当前类交给IOC容器管理,成为IOC容器中的bean

  • 将service层和dao层交给容器管理

@Autowired ---- 运行时,IOC容器会提供该类型的Bean对象,并赋值给该变量 - 依赖注入

  • controller层依赖service层
  • service层依赖dao层

IOC详解

Bean的声明
在这里插入图片描述

注解说明位置
@Component声明bean的基础注解不属于一下三类时,用此注解
@Controller@Component的衍生注解标注在控制器类上
@Service@Component的衍生注解标注在业务类上
@Respository@Component的衍生注解标注在数据访问类上(由于与mybatis整合,用的少)

@Controller:在实际开发中,标注了@RestController,可以不写,由于@RestController = @Controller + @ResponseBody

注意

  • 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写
  • 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller

bean的组件扫描

  • 前面声明bean的四大注解,想要生效,还需要被组件扫描注解@ComponentScan扫描
  • @ComponentScan注解虽然没有显示配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描范围是启动类所在包及其子包

小结

  • 声明bean的注解:@Component、@Controller、@Service、 @Respository
  • @SpringBootApplication具有包扫描作用,默认扫描当前包及其子包

DI详解

Bean注入:

  • @Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误
    在这里插入图片描述

  • 通过以下几种方案来解决:
    1、@Primary — 设置bean的优先级
    在这里插入图片描述

    2、@Qualifier —声明指明哪个bean(类型指定)
    在这里插入图片描述

    3、@Resource — 指定bean的名字(名字指定)
    在这里插入图片描述

依赖注入的注解:

在这里插入图片描述

@Resource与@Autowired区别:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费硬盘数据恢复软件EasyRecovery2024

大部分人在存储数据时,都会将数据存储在硬盘之中。虽然数据存放在硬盘中相对安全,但是硬盘的开盘数据也会出现误删的状况,那么当数据误删时,该怎么进行修复呢。下面就来介绍硬盘开盘数据恢复能全部恢复吗,硬盘开盘数据…

tbh Cutter切割节点

在tbh过程中,如果想把一个元素置为一个位图图片某个图像的后边,如何做呢? 如:把圆形放到花的后边: 最后实现效果:(请忽略边缘的细节,这里只是记录用法) 第一步&#xf…

windows10下Node.js安装教程

文章目录 windows10下Node.js安装教程下载安装包执行安装检查环境变量测试 windows10下Node.js安装教程 下载安装包 官网 执行安装 检查环境变量 系统已经为Node.js添加了相应的系统环境变量 测试 打开命令窗口 使用命令: END

【原创】java+swing+mysql留言管理系统设计与实现

摘要: 留言管理系统是一个集用户交互、信息存储、留言管理于一体的系统,旨在提供一个便捷、高效的方式来收集、管理、展示用户的留言信息。一般留言管理系统都是B/S架构,也就是浏览器服务器模式,但是我们今天使用java语言&#x…

springboot+vue档案管理系统分析与可视化系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

夜晚的石家庄龙泉古镇

今天不想写技术了。乐呵乐呵的玩吧。 下面是石家庄龙泉古镇夜景,请您欣赏。 package mainimport "fmt"func main() {fmt.Println("今天去哪里玩?")fmt.Println("石家庄龙泉古镇")} public static void main(String[] a…

【无标题】输入日期是当年的第n天

从键盘输入正确日期,程序输出是当年的第n天。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么…

C#项目设计——学生成绩管理系统设计

学生成绩管理系统C语言.Net C#项目设计 全套代码加数据库文件,带设计报告,带设计报告哦! 可以用Microsoft Visual Studio打开 用户名和密码在数据里。 报告部分内容: 设计一个学生成绩管理系统。包括“登录窗体”、“主窗体”和…

Floyd - Warshall (弗洛伊德算法)

图中任意两点之间的最短路径问题 Dijkstra和Bellman-Ford也可以以所有点为源点,求出任意两点之间的最短距离,但是Dijstra不能解决带负权的的边,Bellman-Ford 效率慢点 Floyd算法考虑的是一条最短路径的中间节点,即简单路径p{v1 &…

BLS embedded curves族

1. 引言 以太坊基金会Antonio Sanso 2023年论文 Family of embedded curves for BLS中,展示了源自BLS椭圆曲线的embedded curves。 pairing-friendly curve E E E具有bilinear map e : G 1 G 2 → G T e:\mathbb{G}_1\times \mathbb{G}_2\rightarrow \mathbb{G…

2009-2023年上海中考英语作文题目、命题趋势和备考建议(资源)

前面的文章中,六分成长介绍了上海中考语文的作文特点和备考建议。今天为大家介绍上海中考英语的作文那些事。 总体上来说,中国的学生对于写作的有效训练还是比较少的,所以大家都比较担心考试的作文——无论是语文还是英语。这两项也是考试中…

「燃情大促,年终钜惠」,家人们这一波可以冲!

提前过年了家人们,这一波融云“年终钜惠”可以冲!关注【融云全球互联网通信云】了解更多 2023 年 10 月 25 日起至 12 月 31 日止,融云“年终钜惠”活动火热进行中—— 【新客尝鲜】首月福利 2.7 折起,IM 旗舰版国内首月特惠 39…

chap认证带客户端IP分配案例

PPP协议两边的网段可以不在同一个网段,因为数据链路帧用0xff表示帧,不用arp,所以可以不同网段。 R1: aaa local-user test password cipher admin local-user test service-type ppp interface Serial4/0/0 link-protocol ppp pp…

摩尔斯电码加密字符串

摩尔斯电码滴嗒“.-”,加密字符串。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单………

锐捷RG-EW1200G登录绕过漏洞复现

文章目录 锐捷RG-EW1200G登录绕过漏洞复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.复现 0x06 修复建议 锐捷RG-EW1200G登录绕过漏洞复现 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、…

PostgreSQL 数据库日志相关参数

PostgreSQL数据库的配置主要是通过修改数据目录下的 postgresql.conf和pg_hba.conf文件来实现的。 如果想从其他机器上登录该数据 库,需要把监听地址改成实际网络的地址,一种简单的方法是把地址 改成“*”,表示在本地的所有地址上监听&#…

web3 在React dapp中全局管理web3当前登录用户/智能合约等信息

上文 Web3 React项目Dapp获取智能合约对象我们在自己的前端dapp项目中链接获取到了 自己的智能合约 我们继续 我们还是先启动ganache环境 终端输入 ganache -d然后发布一下我们的智能合约 打开我们的合约项目 终端输入 truffle migrate --reset这样 我们的智能合约就部署到区…

Stable Diffusion系列(二):ControlNet基础控件介绍

文章目录 线稿提取类Canny:边缘检测SoftEdge:软边缘检测Lineart:精细线稿提取Scribble/Sketch:涂鸦提取MLSD:建筑领域的线条提取 3D提取类Normal map:法线贴图Depth:深度计算Segmentation&#…

在线数据库关系图设计工具,选Itbuilder

一旦数据库超出了人类可消化的大小,使用关系图工具来辅助其设计就变得至关重要。创建数据库听起来像是一个复杂的过程,但使用现代数据库图表工具,情况并非如此。 itbuilder在线数据库设计工具使用户可以创建和导入数据库关系图以查看数据库对…

Elasticsearch:在你的数据上训练大型语言模型 (LLM)

过去的一两年,大型语言模型(LLM)席卷了互联网。 最近 Google 推出的 PaLM 2 和 OpenAI 推出的 GPT 4激发了企业的想象力。 跨领域构思了许多潜在的用例。 多语言客户支持、代码生成、内容创建和高级聊天机器人都是一些例子。 这些用例要求 LL…