首页 > 其他分享 >SpringBoot数据响应、分层解耦、三层架构

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

时间:2023-11-01 11:56:55浏览次数:39  
标签:依赖 架构 SpringBoot Service Controller 分层 bean 注解 IOC

响应数据

@ResponseBody

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

统一响应结果

image

步骤 :

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

  • 在pom.xml文件中引入dom4j的依赖,用于解析xml文件
    image

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

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

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

注意

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

分层解耦

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

image

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

例如:

image

分层解耦---高内聚低耦合

  • 内聚:软件中各个功能模块内部的功能联系

  • 耦合:衡量软件中各个层/模块之间的依赖、关联程度
    image

  • 控制反转:Inversion Of Control,简称IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想成为控制反转。

  • 依赖注入:Dependency Injection,简称DI。容器为应用程序提供运行时所依赖的资源,称之为依赖注入。

  • Bean对象:IOC容器中创建、管理的对象,称之为bean。

IOC&DI入门 ----步骤

  1. Service层及Dao层的实现类,交给IOC容器管理(控制反转)
    Dao层:
    image

Service层:
image

  1. 为Controller及Service注入运行时,依赖的对象(依赖注入)
    Controller层:
    image

    Service层:
    image

  2. 运行测试

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

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

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

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

IOC详解

Bean的声明
image

注解 说明 位置
@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,将会报出如下错误
    image

  • 通过以下几种方案来解决:
    1、@Primary --- 设置bean的优先级
    image

    2、@Qualifier ---声明指明哪个bean(类型指定)
    image

    3、@Resource --- 指定bean的名字(名字指定)
    image

依赖注入的注解:

image

@Resource与@Autowired区别:

image

标签:依赖,架构,SpringBoot,Service,Controller,分层,bean,注解,IOC
From: https://www.cnblogs.com/xw-01/p/17802736.html

相关文章

  • Jenkins+Docker 一键自动化部署 SpringBoot 项目
    Jenkins和Docker是现代软件开发中非常流行的工具,可以帮助我们自动化构建、测试和部署应用程序。SpringBoot是一种流行的Java框架,可以帮助开发人员快速开发Web应用程序。在本文中,我们将介绍如何使用Jenkins和Docker一键自动化部署SpringBoot应用程序。准备工作首先,你需要安装并配......
  • 重构物理Entity架构,支持更多的形状
    上一节实战如何编译BEPUphysicsint源码到自己的项目,如何整合物理引擎与Unity图形渲染。本节来从新调整设计,让物理的Entity基本操作与物理的形状分离,支持更多的物理形状,支持物理entity与Unity物体位移与旋转同步。主要分成以下3个部分:PhyBaseEntity 设计上一节课我们设计......
  • BEPU物理引擎碰撞系统的架构与设计
    前面我们讲解了如何监听物理引擎的碰撞事件,在物理引擎内核中如何架构与设计碰撞规则,使得物理Entity与周围的物理环境产生碰撞时,如何灵活的控制物理碰撞,本节給大家详细的讲解BEPUphysicsint物理引擎内部是如何管理与控制碰撞规则的。本文主要讲解3个部分:(1)物理引擎碰撞计算......
  • springboot web使用mybatis访问mysql库
    思想:重点:springboot项目可以配置mybatis必须的内容。默认配置文件为“main/resources/application.properties”(yml为其另一种写法,感兴趣自己去查)一切编码跟普通的mybatis相同。注意:xml文件最好放在资源文件夹resources下面,以便编译时直接复制。由此引起需要在springboot......
  • prometheus几种高可用架构介绍及联邦架构部署
    **问题背景:**单个prometheus性能到达瓶颈问题、多个prometheus-server数据汇总问题等**prometheus监控数据持久化**首先大家都知道prometheus是自带数据存储功能的。优点是简单易用,基本无需配置缺点是:1、存在数据无法长久保存(尤其是频繁变更的监控对象,监控对象变化,短时间内监控......
  • 华为云中虚拟机及容器的架构
    虚拟机现实中我们用的计算机看到的都是物理机,而虚拟机,顾名思义就是虚拟的机子,它把磁盘文件和描述文件封装在同一文件夹然后存放在底层存储提供的文件系统中,相较于物理机他的特点有:资源分区封装(操作系统与应用)独立(不同服务器之间的传递)隔离(每台虚拟机拥有一个独立的OS)容器......
  • 第十章、web前端架构师
    目录二十二、大型项目的编译,部署以及性能优化1、前言二十二、大型项目的编译,部署以及性能优化1、前言......
  • 百度AICA首席AI架构师培养计划第七期毕业,大模型深入产业见成果
    10月28日,由深度学习技术及应用国家工程研究中心与百度联合创办的AICA首席AI架构师培养计划,迎来第7期毕业典礼,88位学员获得AI架构师认证。截至目前,AICA已累计为业界培养了410位产业AI领军人才。同时,AICA第7期毕业学员约有三分之一聚焦大模型产业应用课题并取得先期成果。百度文心......
  • Redis部署架构
    部署架构单节点(Single)优点架构简单,部署方便高性价比:缓存使用时无需备用节点(单实例可用性可以用supervisor或crontab保证),当然为了满足业务的高可用性,也可以牺牲一个备用节点,但同时刻只有一个实例对外提供服务高性能缺点不保证数据的可靠性在缓存使用,进......
  • java实现文件夹上传功能实例代码(SpringBoot框架)
    前言有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下一、前端如何设置上传组件并将资源上传到后台服务这里的项目框架为若依VUE版本......