Spring IoC & DI

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:MySQL数据库

JavaEE专栏:JavaEE

关注博主带你了解更多数据结构知识

目录

1. 应用分层

1.1 如何分层:

1.2 MVC与三层架构区别联系

2. Spring

3.IoC & DI⼊⻔

3.1 什么是IoC?

3.2 DI 介绍 

4.IoC 使⽤

4.1 类注解区别

4.2 ⽅法注解@Bean

4.2.1⽅法注解要配合类注解使⽤

4.2.2 定义多个对象 

4.2.3 重命名Bean 

5. DI 依赖注入

5.1 属性注⼊

5.2 构造方法注入 

5.3 Setter 注⼊ 

5.4 三种注⼊优缺点 

属性注⼊

构造函数注⼊

 Setter注⼊

5.5 @Autowired存在问题

@Primary

@Qualifier

@Resource 

 @Resource 和@Autowired区别

6.Spring, Spring Boot和SpringMVC的关系以及区别 


1. 应用分层

应⽤分层是⼀种软件开发设计思想,它将应⽤程序分成N个层次,这N个层次分别负责各⾃的职责,多个层次之间协同提供完整的功能.根据项⽬的复杂度,把项⽬分成三层,四层或者更多层,之前为了让项⽬快速上线,我们通常是不考虑分层的.但是随着业务越来越复杂,⼤量的 代码混在⼀起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动⼀处就牵⼀发⽽动全⾝等问题.所以学习对项⽬进⾏分层对我们来说就是很有必要的了.

1.1 如何分层:

我们上一篇博客中学的Spring MVC中就把整体的系统分成了Model(模型),View(视图)Controller(控制器)三个层次,也就是将⽤⼾视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是⼀种标准的软件分层架构

对于我们后端开发来说,我们可以把整体架构分为表现层、业务逻辑层和数据层.这种分层⽅式也称之为"三层架构"

1. 表现层:就是展⽰数据结果和接受⽤⼾指令的,是最靠近⽤⼾的⼀层;(请求处理、响应数据:负责,接收⻚⾯的请求,给⻚⾯响应数据)

2. 业务逻辑层:负责处理业务逻辑, ⾥⾯有复杂业务的具体实现;(逻辑处理:负责业务逻辑处理的代码)

3. 数据层: 负责存储和管理与应⽤程序相关的数据(数据访问:负责业务数据的维护操作,包括增、删、改、查等操作.)

在Spring中我们把这三层分别分为:

Controller:控制层,接收前端发送的请求,对请求进⾏处理,并响应数据。

Service:业务逻辑层,处理具体的业务逻辑。

Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查

1.2 MVC与三层架构区别联系

MVC 是一种设计模式,用于分离应用程序的用户界面(UI)和业务逻辑,强调用户界面和业务逻辑的分离,使得开发者可以专注于单一方面的开发,而不必担心其他部分的实现细节

三层架构是一种软件架构模式,强调应用程序的不同功能层之间的分离,使得每一层都可以独立开发和测试

MVC 更侧重于用户界面的实现和业务逻辑的分离,而三层架构侧重于整个应用程序的分层和模块化

MVC模式强调数据和视图分离,将数据展⽰和数据处理分开,通过控制器对两者进⾏组合. 三层架构强调不同维度数据处理的⾼内聚和低耦合,将交互界⾯,业务处理和数据库操作的逻辑分开

联系:提高代码的可维护性和可扩展性,⼆者的⽬的是相同的,都是"解耦,分层,代码复⽤"

可测试性:通过分离不同的功能到不同的层或组件,两者都使得单元测试和集成测试变得更加容易。

可维护性:在 MVC 和三层架构中,代码的组织方式使得维护和更新变得更加简单

2. Spring

Spring就是包含了众多⼯具⽅法的IoC容器

3.IoC & DI⼊⻔

3.1 什么是IoC?

IoC 是Spring的核⼼思想,其实IoC我们在前⾯已经使⽤了,我们在前⾯讲到,在类上⾯添加 @RestController 和 @Controller 注解,就是把这个对象交给Spring管理,Spring框架启动时就会加载该类.把对象交 给Spring管理,就是IoC思想.

IoC: Inversion of Control (控制反转),也就是说Spring是⼀个"控制反转"的容器

什么是控制反转呢? 也就是控制权反转.什么的控制权发⽣了反转? 获得依赖对象的过程被反转了 也就是说,当需要某个对象时,传统开发模式中需要⾃⼰通过new创建对象,现在不需要再进⾏创 建, 把创建对象的任务交给容器, 程序中只需要依赖注⼊(DI)就可以了. 这个容器称为:IoC容器. Spring是⼀个IoC容器,所以有时Spring也称为Spring容器

控制反转是⼀种思想,在⽣活中也是处处体现. ⽐如⾃动驾驶, 传统驾驶⽅式,⻋辆的控制权由驾驶员行驶来控制,现在交给了驾驶自动化系统来控制,这也是控制反转思想在⽣活中的实现

IoC容器具备优点:

1. 资源集中管理: IoC容器会帮我们管理⼀些资源(对象等),我们需要使⽤时,只需要从IoC容器中去取 就可以了

2. 我们在创建实例的时候不需要了解其中的细节,降低了使⽤资源双⽅的依赖程度,也就是耦合度

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值