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

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

相关文章:

  • jdk开启https详细步骤
  • 深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
  • Linux权限概念讲解
  • 鸿蒙 长列表加载性能优化
  • 【Web应用服务器_Tomcat】三、Tomcat 性能优化与监控诊断
  • 优化 Flutter 应用启动:从冷启动到就绪仅需 2 秒
  • Flow原理
  • 使用TortoiseGit进行文件比较
  • JAVA-ArrayList使用方法
  • RecoNIC 入门:SmartNIC 上支持 RDMA 的计算卸载-FPGA-智能网卡-AMD-Xilinx
  • 实战指南:搭建AIRIOT全场景智慧养老管理平台系统全流程解析
  • 使用手机录制rosbag包
  • 高性价比手机如何挑选?
  • 基于 SSE 和分块传输的 Uniapp 微信小程序 实现 流式传输 对话
  • 第十二节:性能优化高频题-shallowRef/shallowReactive使用场景
  • Kotlin await等待多个异步任务都完成后才进行下一步操作
  • web技术与nginx网站环境部署
  • docker搭建swarm集群
  • node.js 实战——mongoDB
  • 【Docker】——在Docker工具上安装创建容器并完成项目部署
  • 网警侦破特大“刷量引流”网络水军案:涉案金额达2亿余元
  • 美军空袭也门拘留中心,已致68人死亡
  • 北美票房|《罪人》遭媒体唱衰,好莱坞业内人士集体反击
  • 上海数学教育及数学科普专家陈永明去世,享年85岁
  • 《奇袭白虎团》原型人物之一赵顺合辞世,享年95岁
  • 湖南小伙“朱雀玄武敕令”提交申请改名为“朱咸宁”