Spring中的IOC

约定不等于承诺〃 2024-04-08 09:38 120阅读 0赞

在这里插入图片描述

文章目录

1、关于Spring

Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护交给Spring
Spring 提供面向切编程,可以方便的实现对序进行权限拦截、运监控等功能
声明式事务的支持(张三给李四转账,要么同时成功,要么同时失败)只需要通过配置就可以完成对事务的管理,而无手动编程

2、关于IOC

ioc:inverse of control 控制反转:从主动实例化对象,转换到被动获取对象;主要使用的是依赖注入实现。(由容器帮我们查找并注入依赖的对象,对象只能被动的接收依赖对象,依赖对象的获取被反转了。)
在这里插入图片描述

依赖注入:程序代码不做定位查询,这些工作容器自行完成,只要在程序中使用对象名称计科,至于对象如何在容器中创建,赋值,查找都由容器内部实现。spring容器中的 SpringApplication里面有如下定义:

  1. package com.situ.spring_1;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. // 声明该类是一个SpringBoot的引导类
  6. @SpringBootApplication
  7. // @MapperScan注解,扫描MyBatis Mapper接口类
  8. @MapperScan("com.situ.spring_1.mapper")
  9. public class Spring1Application {
  10. public static void main(String[] args) {
  11. SpringApplication.run(Spring1Application.class, args);
  12. }
  13. }

根据该定义,即可扫描同级下的所有包中的注解,@Controller,@Service等扫描到即可在Spring容器中创建
在这里插入图片描述
ioc主要是用来实现对象装配的,比如controller调用service,controller中的service
对象要来自容器,也就是容器要把service对象装配到controller中。spring框架根据set方法(设值注入)或者构造函数实现对象的注入(构造注入)。(但还自动装配用的多)

自动装配(使用注解)?
spring会判断你需要什么类型的对象,然后不用你配置,直接给你实现注入,默认是根据type实现注入的

在这里插入图片描述" class="reference-link">如 UserController需要UserService实例:那么容器会自动搜索对应类型的service实例,自动的装配到UserController 在这里插入图片描述 在这里插入图片描述

之前我们获取对象
在这里插入图片描述

现在通过spring容器获取对象,先配置
在这里插入图片描述

获取对象
在这里插入图片描述

设值注入和构造注入
如下图当我们需要给UserBiz对象的dao赋值时,应该怎么做?(一个对象种注入另一个对象时)
在这里插入图片描述

之前的做法
在这里插入图片描述

第一种现在的做法,通过spring实现设值注入
在这里插入图片描述
在这里插入图片描述

第二种现在的做法,通过spring实现构造注入
在这里插入图片描述

总结:
设值注入
在这里插入图片描述

在这里插入图片描述

自动装配(用注解)

注解的工作原理很简单
1.读取配置信息,知道要扫描哪些包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,120人围观)

还没有评论,来说两句吧...

相关阅读