(javaweb)分层解耦

ops/2024/9/20 7:23:51/ 标签: java

目录

一.三层架构

二.分层解耦

三.IOC&DI入门

四.IOC详解

五. DI详解


 

一.三层架构

复用性差,难以维护和管理 

前端发起请求,先会到达controller,再调用service进行逻辑处理,逻辑处理的前提是先拿到数据,到dao层,再去操作文件中的数据。将数据拿到,再返回给service,service进行逻辑处理,返回给controller进行响应数据给前端。

java">package com.itheima.controller;import com.itheima.Util.XmlParserUtils;
import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class Empcontroller {@RequestMapping("/listEmp")public Result list(){//加载并解析emp.xml  并且封装到集合当中    dao层String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList = XmlParserUtils.parse(file, Emp.class);//对数据进行转换处理   service层//1.处理genderempList.stream().forEach(emp -> {String gender=emp.getGender();if("1".equals(gender)){emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}//2.处理jobString job=emp.getJob();if ("1".equals(job)){emp.setJob("讲师");}else if ("2".equals(job)){emp.setJob("班主任");} else if ("3".equals(job)) {emp.setJob("就业指导");}});//3.响应数据   controller层return Result.success(empList);}
}

先定义dao的接口,增强程序的灵活性和拓展性

 

三层架构:便于维护 方便架构 复用性强

二.分层解耦

 解耦:解除耦合

高内聚:将自己相关的内容放一块,无关的不写    依赖程度越高,耦合程度越高

设置controller要创建service类---耦合了

设计原则:高内聚低耦合(高内聚:模块内部之间的功能越紧密越好 低耦合:尽可能去降低模块与模块之间,层与层之间的关联)最好能做到解除耦合:层与层之间没有依赖(灵活性可扩展性提高)

 容器:IOC容器或者叫spring容器

容器中创建的对象:bean对象

三.IOC&DI入门

1.将new出的对象删除--空指针异常

IOC与DI共同完成业务解耦操作

控制反转:

依赖注入: 

四.IOC详解

 IOC控制反转--将对象的使用权交给ioc容器,由ioc容器创建和管理这些对象

@Conponent--声明bean对象----------衍生出三个注解

在项目开发当中,某一个类不能规整到那三层里面,若还想将类交给ioc容器管理,就使用conponent注解

value属性来声明bean的名字-------首字母小写--bean的名字

是默认的bean的名字

一般不用指定 采用默认的名字即可

五. DI详解

ioc容器要为应用程序提供运行时所依赖的资源  资源--就是对象

primary--让当前的bean生效

​​​​​​​

 


http://www.ppmy.cn/ops/93727.html

相关文章

基于SpringBoot的体育馆管理系统的设计与实现

TOC springboot162基于SpringBoot的体育馆管理系统的设计与实现 绪论** 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进…

PyTorch 基础学习(6)- 函数API

系列文章&#xff1a; PyTorch 基础学习&#xff08;1&#xff09; - 快速入门 PyTorch 基础学习&#xff08;2&#xff09;- 张量 Tensors PyTorch 基础学习&#xff08;3&#xff09; - 张量的数学操作 PyTorch 基础学习&#xff08;4&#xff09;- 张量的类型 PyTorch 基础学…

KillWxapkg-自动化反编译微信小程序工具(附安装包)

KillWxapkg是一款纯Golang实现&#xff0c;一个用于自动化反编译微信小程序、小程序安全评估工具工具&#xff0c;小程序安全利器&#xff0c; 可以自动解密&#xff0c;解包&#xff0c;可还原工程目录&#xff0c;支持Hook&#xff0c;小程序修改&#xff0c;支持微信开发者工…

k8s 单机 部署

k8s 单机 部署 香港服务器 centos7.6 2核4G 30M 搞个k8s单机部署搞了好几天 就是一直出错 遇到了好多次镜像的错误 真的是日了&#x1f415;了索性 搞个香港服务器&#xff0c;不折腾镜像源了Deploy Kubernetes On-Premises Using CentOS 7 — Part 1 https://medium.com/sar…

【单片机】51单片机入门教程(二):定时器的模式详解与中断应用实例

文章目录 51单片机定时器教程:模式详解与中断应用实例1. 介绍2. 51单片机定时器/计数器概述3. 定时器控制寄存器与中断入口4. 模式0:13位定时器/计数器5. 模式1:16位定时器/计数器6. 模式2:8位自动重装载定时器/计数器7. 模式3:分割两个独立的8位定时器/计数器8. 总结51单…

基于SpringBoot的企业资产管理系统

TOC springboot117基于SpringBoot的企业资产管理系统 系统概述 1.1 研究背景 智慧养老是面向居家老人、社区及养老机构的传感网系统与信息平台&#xff0c;并在此基础上提供实时、快捷、高效、低成本的&#xff0c;物联化、互联化、智能化的养老服务。 随着科技进步&#…

【qt】QMainWindow下实现一个记事本

之前我们学过QWidget&#xff0c;QMainWindow会在ui界面多一个菜单 先实现ui界面 1.添加文本编辑&#xff0c;实现可以写多行 2.将文本编辑放大&#xff0c;拖动即可 3.编辑菜单栏 4.然后我们要实现对应子列表的功能&#xff0c;但是在这里不能转到槽&#xff0c;所以我们…

关于自己部署AI大模型踩的坑(一)——硬件篇

最近一直在研究如何打算属于我自己的J.A.R.V.I.S.&#xff08;钢铁侠中的机器人管家&#xff09;。 上一篇写了我最近在部署自己的大模型&#xff0c;使用llama3.1&#xff0c; 和通义千问2。虽然最终结果也是成功了&#xff0c;过程却十分地坎坷。 所以这一篇文章一是总结其中…

uniapp版本更新除了plus.runtime.getProperty的解决办法

以下是展示图 带尺寸的图片: 首先把以下代码放到想要更新弹出的页面 //template部分<uni-popup ref"popup" background-color"#fff"><versionUp handleCloseVersion"closeVersion"></versionUp></uni-popup>//script…

Mysql——对数据基本操作(增删查改)——操纵语言(DML)

之前的创建数据库和创建表&#xff0c;类型、约束都是用的DDL【data definition language】 数据定义语言&#xff0c;用来维护存储数据的结构 代表指令: create, drop, alter 那么现在我们来学习数据操纵语言 DML【data manipulation language】 数据操纵语言&#xff0c;用来…

使用Selenium爬取网络页面

在现代网络数据分析和自动化测试中&#xff0c;Selenium 是一个强大而流行的工具。它不仅可以帮助开发者自动化浏览器操作&#xff0c;还能用于爬取网络页面。本文将介绍如何使用 Selenium 爬取网络页面&#xff0c;包括基本设置、常用操作及一些实用的技巧。 一、什么是 Selen…

腾讯cdg提前批一面0726

介绍项目 黑马商城 为什么使用rabbitmq 用于异步更新订单 扣减余额后异步更新订单失败怎么办 分布式事务回滚 什么是接口幂等性&#xff0c;怎么实现 接口幂等性是指同一个接口在短时间点击多次都之后返回只执行一次的结果。 Token机制&#xff1a; 生成Token&#xff1a;在客户…

点赞功能开发

文章目录 1.点赞收藏功能设计1.示意图2.描述1.使用redis记录的数据2.数据库的设计3.功能设计1.新增点赞2.取消点赞3.查询当前题目被点赞的数量4.查询当前题目被当前用户是否点过赞5.我的点赞 2.代码生成器的使用1.找到代码生成器在磁盘的位置&#xff0c;直接复制到项目下2.导入…

微信小程序中实现自动滚动

使用scroll-view组件的scroll-into-view属性&#xff1a; <scroll-view class"container" scroll-y"{{true}}" scroll-into-view"recordBottomScroll"><view class"text_style" style"color: #252526;">{{te…

16 交换机命令行配置

交换机命令行配置 一、交换机命令行基本配置 &#xff08;一&#xff09;配置主机名 Switch>enable Switch#configure terminal Switch(config)#hostname S1&#xff08;二&#xff09;查看配置信息 Switch#show running-config Building configuration...Current confi…

SpringBoot配置

目录 yaml基本含义 yaml基本语法 yaml数据格式 实操 yaml:参数引用 小结 yaml基本含义 通过对比不同配置文件写法&#xff0c;就可以发现yaml配置文件&#xff0c;更加注重数据本身 原因 1 比properties配置文件&#xff0c;更加注重层级关系 2 和xml文件比起来&#xff…

【Unity-UGUI】UI重建

UGUI UI重建二三事(一) UGUI UI重建二三事(二) [UGUI源码二]Unity UI重建(Rebuild)源码分析 这一部分主要是通过以上几篇文章学习的&#xff0c;总结一下&#xff1a; UI重建主要分类两类&#xff0c;一类是布局重建(Layout Rebuild)&#xff0c;另一类是图形重建(Graphic Reb…

jar包扫描不到,idea如何通过Project Structure设置

目录 一、进入Project Structure二、添加你的项目进来三、手动添加依赖 很多时候jar包文件已经存在&#xff0c;但是无法使用&#xff0c;需要通过Project Structure设置 一、进入Project Structure 选择Modules->点击 二、添加你的项目进来 一直next&#xff0c;最后点…

git推送错误:Failed to connect to github.com port 443

今天在push代码到github的时候遇到了错误&#xff1a;fatal: unable to access https://github.com/ShangyiAlone/FacemaskDetection.git/: Failure when receiving data from the peer 网上搜了下教程&#xff0c;是开启梯子的时候代理服务器的问题&#xff0c;开启梯子的时候…

【Python SHA256 摘要算法】

SHA256 是一种广泛使用的密码散列函数&#xff0c;用于生成数据的唯一指纹&#xff0c;即散列值。它属于SHA-2家族&#xff0c;该家族还包括 SHA-384 和 SHA-512 算法。SHA256 算法在许多领域都有应用&#xff0c;例如&#xff1a; 数据完整性验证&#xff1a;用于验证数据在传…