学习笔记:黑马程序员JavaWeb开发教程(2024.11.8)

news2024/11/14 10:45:18

5.10 分层解耦-分层解耦(IOC-DI)
    

在之前写的代码中,Controller层中new了一个Service层中的对象,在Service层中类名改变,则Controller层中也需要变化,这就是两个层之中耦合较重,需要减少耦合性,可以将Controller层中的EmpService变量中需要的对象放到一个容器中,使用容器作为Controller层和Service层的中介,减少他们之间的耦合
 
    因此就引出了控制反转(IOC)和依赖注入(DI)的概念

5.11 分层解耦-IOC&DI入门


    控制反转:@Component
    依赖注入:@Autowired
 
 
    当我们要将Service层中的对象从EmpServiceA改成EmpServiceB,只需要将容器中的对象从A变成B就可以了,将EmpServiceA类上面的@Conponent删去,给EmpServiceB加上

5.12 分层解耦-IOC&DI-IOC详解


    Spring框架为了更好的标识web应用程序开发中bean对象属于那一层,又提供了Component的三个衍生注解,建议再开发中使用这三个衍生注解,在不知道放到那个层,比如工具类的时候可以用Component
    在springboot集成web开发中,声明控制器bean只能用@Controller
 
    Bean默认名字类名首字母小写,当需要自定义名字的时候,例:@Component(value = ‘daoA’)//value=可以不写
    因为扫描只默认扫描当前包及其子包,所以不在这个范围当中的文件需要被扫描,只能手动指定,不过手动指定之后,就需要指定所有需要扫描的包,包括默认的包,因为手动指定后,默认指定就被取代了,例:@ComponentScan({“dao”,”com.itheima”}),当然不推荐这种方式,推荐直接都放在一个包下

5.13 分层解耦-IOC&DI-DI详解


    想要谁生效,就在那个类上面加@Primary
    想要谁生效,就在@Autowire上面加@Qualidier(“想要的bean的名字”)
    使用@Resource注解时,不用@Autowire注解了,前者是按照名词注入,后者默认是按照类型注入,例:@Resource(name = ‘bean的名字’)
 

8.13 Mybatis-入门-课程介绍


8.14 Mybatis-入门-快速入门


    Mybatis是在Java中编写sql语句,将sql语句发送到数据库执行
    在springboot中配置Mybatis,需要对springboot的默认配置文件application.properties中配置数据库的四要素:驱动类的全类名、数据库连接的url、数据库的用户名、数据库连接的密码
    在入门阶段使用注解的方式,按照Mybatis的规范,需要定义一个持久层的接口UseMapper,并且在这个接口上加@Mapper注解来标识注释Mybatis持久层上的一个接口,个人认为比较重要的是@Mapper这个标识的用处。这是数据访问层的接口。
    下图代码中:@Select来指定当前是一个查询操作,并在该注解中(括号中)指定要执行的sql语句,要执行这个sql语句只要调用UseMapper中的list()方法即可
 
    在Mybatis中不需要定义接口的实现类,只需要定义map接口,因为程序在运行时,框架底层会自动生成这个接口的实现类对象。也就是加上@Mapper注解之后,在运行时,会自动生成该接口的运行实现类对象(代理对象),并且将该对象交给IOC容器管理。所以虽然接口不能被直接new,但是因为因为又@Mapper注解,使其可以直接new
    在实体类创建时,推荐使用包装类
    测试文件写在tset目录下,因为接口不能直接new,但是在前面@Mapper注解可以得到实现类,而且放到了IOC中,因此采用依赖注入的方式获取数据
    @SpringBootTest注解是springboot整合单元测试的注释,一旦加了该注解,则其中的单元测试方法在运行的时候会自动加载整个springboot环境,并且创建springboot IOC容器

8.15 Mybatis-入门-配置SQL提示


    如果不配置的话,写的sql语句就会像字符串一样,不会被识别,也就不会有报错,如果写错了,就非常不友好,所以要配置
    配好了之后,发现输入数据库名没有出现提示,或者爆红,还需要idea和数据库之间建立连接,其中Database数据库需要填写,要不然不知道你要那个数据库,在这里应该填写Mybatis
配置和连接都在PPT里面
在这里没配,到时候写案例的时候记得配

8.16 Mybatis-入门-JDBC


    Mybatis是一个持久层框架,用于简化JDBC操作

8.17 Mybatis-入门-数据库连接池


    原来的连接方式:客户端创建一个新的连接对象,再来执行这条sql语句,sql语句执行之后,又需要把这个连接对象关闭,来释放资源
    有数据库连接池,程序在启动的时候,就会在这个容器当中初始化一定数量的连接对象,客户端在执行sql语句的时候,就可以从连接池获取一个连接,获取到连接之后,再来执行sql语句,sql语句执行之后,会把这个连接还给连接池;当个别客户端获取了连接,但是没有使用,也就是这个连接处于空闲状态,数据库连接池回去监测这个空闲时间,要是这个空闲时间超过了连接池中预设的最大值,则这个连接会被释放归还给连接池
 
    Springboot中默认追光者数据库,需要切换数据库时,可以采用两种方式,第一种添加对应数据库的配置,第二种在spring那个数据库四要素进行修改:
 

8.18 Mybatis-入门-lombok工具包


    使用lombok需要引入lombok的依赖
 

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

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

相关文章

Python常见并行化方法及性能对比

Python代码中通常有三种实现并行化的方法 multiprocessing的同步方法,mapmultiprocessing的异步方法,apply_asyncRay提供的并行或分布式能力 Ray 和 Python 的 multiprocessing 模块都是用于并行和分布式计算的工具,但它们在设计目标、功能…

【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计

微服务系统是一类基于微服务架构风格的分布式系统,它将应用程序拆分成多个独立的小型服务,每个服务都运行在独立的进程中,并采用轻量级通信协议进行通信。这些服务可以由不同的团队开发、不同的编程语言编写,并且可以按需部署。微…

【WRF理论第七期】WPS预处理

【WRF理论第七期】WPS预处理 运行WPS(Running the WPS)步骤1:Define model domains with geogrid步骤2:Extracting meteorological fields from GRIB files with ungrib步骤3:Horizontally interpolating meteorologic…

【设计模式】行为型模式(一):模板方法模式、观察者模式

行为型模式(一):模板方法模式、观察者模式 1.模板方法模式(Template)1.1 主要特点1.2 适用场景1.3 示例1.3.1 抽象类定义模板方法1.3.2 子类实现具体步骤1.3.3 客户端1.3.4 结果输出 2.观察者模式(Observer…

【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程

1. 简介 ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开…

国家电投“电投云”平台,浪潮信息助力其登顶IDC大奖

近日,国际权威咨询机构IDC揭晓了“2024 IDC中国未来企业大奖”优秀奖榜单。国家电力投资集团有限公司倾力打造的“电投云”平台,凭借其卓越的大规模云计算能力、高效的应用迁移设计,成功支撑了集团的产业数字化与管理数字化应用,为…

下载mysql的jar,添加至jmeter中,编写jdbc协议脚本1106

下载jar包: 步骤1:进入maven仓库官网https://mvnrepository.com/ 步骤2:搜索实际的数据库 步骤3:点击 Mysql connnector/J 步骤5、查看数据库的版本号,选择具体版本,我的是mysql 8.0.16,下图,…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)

介绍 [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用 github地址:https://github.com/dotnetcore/CAP官网地址: https://cap.dotnetcore.xyz/官网文档:https://cap.dotnetcore.xyz/userguide/zh/cap/id…

嘉吉连续第七年亮相进博会

以“新质绿动,共赢未来”为主题,嘉吉连续第七年亮相进博会舞台。嘉吉带来了超过120款产品与解决方案,展示嘉吉在农业、食品、金融和工业等领域以客户为中心的创新成果。这些产品融合了嘉吉在相关领域的前瞻性思考,以及对本土市场的…

低代码工作流平台概述-自研

讲解视频可看【【低代码】【企业级】【毕设】一键生成web应用,最强最便捷简单的低代码工作流平台-哔哩哔哩】 【低代码】【企业级】【毕设】一键生成web应用,最强最便捷简单的低代码工作流平台_哔哩哔哩_bilibili 1.在线设计数据库 2.表单设计 3.流程设…

vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了,原理很简单就是加个时间戳 /* eslint-disable no-undef */ import {defineConfig, loadEnv} from vite import path from path import createVitePlugins from…

【C++滑动窗口】1297. 子串的最大出现次数|1748

本文涉及的基础知识点 C算法:滑动窗口及双指针总结 固定长度滑动窗口 LeetCode1297. 子串的最大出现次数 给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数: 子串中不同字母的数目必须小于等于 maxLetters 。…

【Vue】简易博客项目跟做

项目框架搭建 1.使用vue create快速搭建vue项目 2.使用VC Code打开新生成的项目 端口号简单配置 修改vue.config.js文件,内容修改如下 所需库安装 npm install vue-resource --save --no-fund npm install vue-router3 --save --no-fund npm install axios --save …

机器人助力Bridge Champ游戏:1.4.2版本如何提升玩家体验

在Bridge Champ游戏中,机器人扮演着桥牌游戏的“无名英雄”角色,默默地提升玩家体验。凭借智能化的设计,这些机器人不仅能够陪练,也大大提升了比赛的流畅度与趣味性。 Bridge Champ是什么 Bridge Champ是一个基于Ignis公链的在线…

U-Mail反垃圾邮件网关精准拦截各种垃圾病毒邮件

在当今数字化时代,电子邮件已成为企业沟通不可或缺的一部分。然而,其开放性也使得电子邮件系统容易受到垃圾邮件和恶意软件的侵袭。根据最新数据,2024年第二季度,国内企业邮箱用户共收到9.1亿封垃圾邮件,这一数字比上一…

Docker可视化管理面板DPanel的安装

本文软件由网友 rui 推荐; 什么是 DPanel ? DPanel 是一款 Docker 可视化管理面板,旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能,使用户能够更轻松地管理和部署 Docker 环境。 软件特点: 可视化管理&…

Java——final用法

一、final 介绍 在Java中,final关键字有多种用途,可以用来修饰变量、方法和类。它的主要作用是确保所修饰的内容不可改变。 二、final 用法 1、修饰变量 1)局部变量 当一个局部变量被声明为final时,它的值在初始化后就不能被…

科技改变生活:最新智能开关、调光器及插座产品亮相

根据QYResearch调研团队的最新力作《欧洲开关、调光器和插座市场报告2023-2029》显示,预计到2029年,欧洲开关、调光器和插座市场的规模将攀升至57.8亿美元,并且在接下来的几年里,将以4.2%的复合年增长率(CAGR&#xff…

走进算法大门---双指针问题(一)

一.双指针算法介绍 概念:双指针是指在遍历数据结构(如数组、链表等)时使用两个指针,通过特定的移动规则来解决问题。这两个指针可以同向移动,也可以相向移动。 同向双指针:常用于解决需要两个位置信息的问…

用 Python 从零开始创建神经网络(一)

用 Python 从零开始创建神经网络(一) 引言1. A Single Neuron:Example 1代码部分: Example 2代码部分: 2. A Layer of Neurons:Example 1代码部分: 引言 本教程专为那些对神经网络已有基础了解…