MVC三层架构、Springboot IOC容器以及DI依赖注入

三层架构
在这里插入图片描述

controller:只负责接收请求,响应数据----调用Service层业务

而service只处理业务逻辑,具体数据要通过Dao层获取

Dao将数据返回给Service进行处理,再将结果返回给Controller层,然后响应给前端

控制反转、依赖注入

背景:
在这里插入图片描述
Controller耦合Service,一旦service名称改变,就需要手动去controller层改动代码
解决方案

private EmpService empService = new EmpServiceA();
//1.改为,不能直接用会报空指针异常。
private EmpService empService;

//2.还需把new EmpServiceA()对象放在一个容器里,用到哪个对象就从容器中查询

在这里插入图片描述

问题一

对象如何交给容器管理?

答:控制反转 IOC

对象的创建控制权由程序自身转移到外部容器

问题二

容器如何为程序提供所需要的资源对象?

答:依赖注入 DI

容器为应用程序提供运行时所依赖的资源

在这里插入图片描述

Bean对象

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

如何实现IOC&DI

  1. 将Service层和Dao层的实现类,交给IOC容器管理,成为IOC容器中的bean对象----@Component
  2. 为Controller和Service注入运行时依赖的对象----@Autowired

运行时,IOC容器会提供该类型的bean对象,并赋值给该变量
在这里插入图片描述
在这里插入图片描述
一般使用@RestController、@Service、@Repository在三层上

如果有其他类(不属于这三层,比如:工具类)需要加到IOC容器,这时可以使用@Component

注意:

@Repository(value=“daoB”) //设置EmpDaoB别名
在这里插入图片描述
注意:

  1. 使用@Autowired注解:默认按照类型装配。一个接口只能对应一个IOC容器管理的bean对象。如果有两个,dao—daoA,daoB就会报错,不能完成自动装配
  2. 解决方案:
    在这里插入图片描述
    如果需要存在多个相同的bean----@Primary/@Qualifier/@Resource

@Primary:在其中一个实现类上加,设置这个实现类的优先级先注入,自动注入这个类

@Qualifier:指定bean的名字(spring提供)
在这里插入图片描述
@Resource:指定bean对象。(jdk提供)

  1. @Autowired和@Resource区别
    在这里插入图片描述

Bean组件扫描

1.手动----@ComponentScan,让Springboot能够扫描到(不推荐!!!)

用这个之后需要指定扫描的包,以及启动类所在的包(会覆盖默认的@SpringbootApplication,需要重新指定)

2.把所有类放在启动类所在的包/子包下
在这里插入图片描述

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是基于Spring Framework的,其中最重要的一个概念就是IOC(Inversion of Control,控制反转)和依赖注入(Dependency Injection,DI)。 IOC是一种设计模式,它的核心思想是将对象的创建和对象之间的依赖关系的维护交给一个容器来管理,而不是由应用程序自己去管理。在Spring Boot中,IOC容器负责管理应用程序中的对象,应用程序只需要定义对象的类型和依赖关系,容器就可以自动创建和管理这些对象,从而减少了应用程序的耦合度和代码的复杂度。 依赖注入IOC的一种实现方式,它通过将对象的依赖关系注入到对象中,来解决对象之间的依赖关系问题。在Spring Boot中,依赖注入可以通过构造函数注入、Setter方法注入、注解注入等方式实现。 构造函数注入是通过在对象的构造函数中定义依赖关系的方式实现的,Spring Boot会自动调用构造函数来创建对象,并将依赖关系注入到对象中。 Setter方法注入是通过在对象的Setter方法中定义依赖关系的方式实现的,Spring Boot会自动调用Setter方法来设置对象的依赖关系。 注解注入是通过在对象的属性或方法上添加注解的方式实现的,Spring Boot会自动扫描应用程序中的注解,并自动将依赖关系注入到对象中。 总之,IOC依赖注入Spring Boot的核心思想,它们可以帮助我们更加高效地管理和维护应用程序中的对象和依赖关系,从而提高应用程序的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值