当前位置: 首页 > ds >正文

Web开发之三层架构

实例:

分层解耦

耦合:衡量软件中各个层/各个模块的依赖关联程度。

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

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

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

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

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

IOC & DI入门

1.将Dao 及 Service层的实现类,交给I0C容器管理

2.为Controller及 Service注入运行时所依赖的对象

IOC详解

要把某个对象交给I0C容器管理,需要在对应的类上加上如下注解之一:

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

注意:
声明bean的时候,可以通过注解的value属性指定bean的名字,如果没有指定,默认为类名首字母小写

- 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。

- 该注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包

DI详解

基于@Autowired进行依赖注入的常见方式有如下三种:

属性注入

优点:代码简洁、方便快速开发。

缺点:隐藏了类之间的依赖关系、可能会破坏类的封装性

构造器注入

优点:能清晰地看到类的依赖关系、提高了代码的安全性。

缺点:代码繁琐、如果构造参数过多,可能会导致构造函数肿

注意:如果只有一个构造函数,@Autowired注解可以省略

setter注入

优点:保持了类的封装性,依赖关系更清晰。

缺点:需要额外编写setter方法,增加了代码量。

@Autowired注解,默认是按照类型进行注入的。

如果存在多个相同类型的bean,将会报出如下错误:

方案一:@Primary


方案二:@Qualifier


方案三:@Resource

http://www.xdnf.cn/news/2876.html

相关文章:

  • 从困局到破局的AI+数据分析
  • vscode以管理员身份运行报错
  • 用 Python打造交互式图片-音视频管理器:代码分析与实践
  • 厚铜pcb生产厂家哪家好?
  • 深入解析C2服务器:网络攻击的核心枢纽
  • 莫队算法学习笔记
  • Spring-全面详解(学习总结)
  • 具身智能机器人的应用场景及最新进展
  • Java写项目前的准备工作指南(技术栈选择 环境搭建和工具配置 项目结构设计与模块划分)
  • springboot 视频分段加载在线播放
  • 【含文档+PPT+源码】基于微信小程序的旅游论坛系统的设计与实现
  • Linux中的计划任务
  • Python----卷积神经网络(卷积为什么能识别图像)
  • 顶会idea:Mamba+CNN暴力涨点新突破!
  • vue复习91~135
  • Blender插件 幽灵拖尾特效动画 Ghosts V1.0
  • 重测序关系矩阵构建方式汇总
  • 什么是SCADA系统?
  • Redis ⑦-set | Zset
  • [OS] POSIX C库介绍
  • pgrep和pkill命令详解
  • Dockerfile讲解与示例汇总
  • C#进阶学习(十六)C#中的迭代器
  • VASP 教程:VASP 结合 phonopy 计算硅的声子谱
  • Electron 入门指南
  • [minilibc] 库文件的调用放置
  • 案例篇:如何用tcpdump和Wireshark识别潜在威胁
  • 大学之大:韩国科学技术研究院2025.4.28
  • Python依据卫星TLE轨道根数,计算可见时间窗口
  • Web 基础与Nginx访问统计