news 2026/4/17 20:23:43

Java SpringBoot学习记录(5)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java SpringBoot学习记录(5)

3.1 SpringBoot Web分层解耦 三层架构:

学习视频链接:Day05-09. 分层解耦-三层架构_哔哩哔哩_bilibili

下面是一个未经过分层解耦的案例(EmpController)

由于整个内容写在一个Controller文件里面,导致其复用性差并且难以维护。但是我们可以对内容分成三部分:数据访问部分,逻辑处理部分,接受响应部分。由此引出三层架构的思想。

三层架构:

接下来我们将原来的EmpController分成EmpDao,EmpService,EmpController三部分,实现三层架构。

3.2 SpringBoot Web分层解耦 IOC/DI引入:

学习视频链接:Day05-10. 分层解耦-分层解耦(IOC-DI引入)_哔哩哔哩_bilibili

内聚和耦合的定义

内聚:软件中各个功能模块内部的功能联系。
耦合:衡量软件中各个层/模块之间的依赖、关联的程度。

软件设计原则要求:高内聚低耦合。

分层解耦情景:

上图是前面提到过的controller层的代码。由于新建了一个EmpServiceA对象导致controller层和service层耦合,如果多添加EmpServiceB的业务逻辑,controller就不能只绑定EmpServiceA。下面进行分层解耦来解决这样的问题:

第一步:将new对象删除,仅保留声明
第二步:创建一个容器,容器里面可以存放
EmpServiceA,也可以存放EmpServiceB。
第三步:controller访问容器即可

控制反转:InversionOfControl,简称Ioc。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
依赖注入:DependencyInjection,简称Dl。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入。
Bean对象:loc容器中创建、管理的对象,称之为bean。

3.3 SpringBoot Web分层解耦 IOC/DI入门:

学习视频链接:Day05-11. 分层解耦-IOC&DI-入门_哔哩哔哩_bilibili

@Component:

将当前类交给IOC容器管理,成为IOC容器中的bean - 控制反转

@Autowired:

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

3.4 SpringBoot Web分层解耦 IOC详解:

学习视频链接:Day05-12. 分层解耦-IOC&DI-IOC详解_哔哩哔哩_bilibili

关于Component的衍生注解:

Bean组件扫描:

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

3.5 SpringBoot Web分层解耦 DI详解:

学习视频链接:Day05-13. 分层解耦-IOC&DI-DI详解_哔哩哔哩_bilibili

Bean注入:

三种解决方法:

1.在想要的@Service上面添加@Primary:

2.在@Autowired上面通过指定bean的value值确定

3.在容器对象上面通过指定bean的名称确定

@Resource与@Autowired区别

  • @Autowired是spring框架提供的注解,而@Resource是JDK提供的注解。
  • @Autowired默认是按照类型注入,而@Resource默认是按照名称注入。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 20:21:33

Go语言的微服务开发

Go语言的微服务开发 微服务基础 微服务架构是一种将应用程序拆分为多个独立服务的架构风格,每个服务都运行在自己的进程中,通过网络进行通信。Go语言由于其轻量级、高性能和并发特性,非常适合微服务开发。 基本概念 微服务的特点 独立性&…

作者头像 李华
网站建设 2026/4/17 20:21:26

免费解锁Cursor AI Pro完整功能:5分钟掌握专业级AI编程助手

免费解锁Cursor AI Pro完整功能:5分钟掌握专业级AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…

作者头像 李华
网站建设 2026/4/17 20:16:19

企业安全漏洞知识库建设实战 — 从邮箱收件到结构化漏洞台账

4 年 515 封安全邮件,整理成 155 条结构化漏洞记录,含分类、解读和修复建议。本文记录从零建设安全漏洞知识库的完整过程。 前言 很多企业都有安全邮箱(如 security@company.com)接收外部安全研究者的漏洞报告,但这些报告往往散落在邮箱里,没有系统化管理: 不知道总共收…

作者头像 李华
网站建设 2026/4/17 20:14:19

从moment.js到Day.js:中文环境迁移与自定义配置实战

1. 为什么从moment.js迁移到Day.js? 如果你正在使用moment.js处理日期时间,可能已经感受到它的"重量"。一个简单的日期格式化操作,就可能让你的项目打包体积增加几十KB。这在现代前端开发中,尤其是移动端场景下&#x…

作者头像 李华
网站建设 2026/4/17 20:14:19

SAP EPIC 银企直连 农业银行 Socket 报文解析与ABAP实现详解

1. 农业银行Socket接口报文结构解析 第一次接触农业银行银企直连项目时,我被它独特的Socket报文格式搞得一头雾水。和常见的HTTP接口不同,农行的报文采用了"包头数据包"的结构,这种设计在金融系统中其实很常见,主要是为…

作者头像 李华
网站建设 2026/4/17 20:12:29

9.python中的网编

目录一、 网络通信的“通行证”:什么是 TCP 协议?1. 面向连接2. 可靠传输3. 数据流传输TCP 与 UDP 的技术对比二、 核心组件:认识 Python 中的 Socket 模块三、 服务端(Server)开发流程:四、 客户端 (Clien…

作者头像 李华