【Spring篇】简述IoC入门案例,DI入门案例

🎊专栏【Spring】

🍔喜欢的诗句:天行健,君子以自强不息。

🎆音乐分享【如愿】

🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

🎄Spring Framework系统架构

🎆Spring核心概念

Spring框架中核心的要属IoC(控制反转)和DI(依赖注入)了。这两大特性是我们入门Spring时首先需要理解掌握的内容。那么IoC和DI的思想是什么?应该如何编写代码实现基本的注入呢?今天这篇文章就带你快速实战Spring最基础的案例,一步步揭开IoC和DI的神秘面纱。

通过示例代码,结合简单说明,你可以快速理解IoC/DI核心思想,并学会如何利用Spring容器实现对象的注入。这将打下你学习Spring框架的基础,让你通过简单实操对这些概念有更直观感受。跟随本文,开始Spring之旅吧!

🌺IoC控制反转

使用对象时,由主动new产生对象转换为由外部提供对象,在此过程中对象创建控制权由程序转移到外部,这种思想称为控制反转

spring技术对IoC思想进行了实现

  • spring提供了一个容器,称为IoC容器,用来充当IoC思想中的"外部"
  • IoC容器负责对象的创建,初始化等一系列工作,被创建或被管理的对象在IoC容器里面称为Bean

🌺DI依赖注入

在容器里面建立bean与bean之间的依赖关系,称为依赖注入

🛸目标

充分解耦

  • 使用IoC容器管理bean(IoC)
  • 在IoC容器内将有依赖关系的bean进行关系绑定(DI)

🛸最终效果

使用对象不仅可以直接从IoC容器里面获取,并且获取到的bean,已经绑定了所有的依赖关系

🍔IoC入门案例

🎈步骤

🏳️‍🌈导入Spring坐标

🏳️‍🌈定义Spring管理的类(接口)

🏳️‍🌈创建Spring配置文件,配置对应的类作为Spring管理的bean

🏳️‍🌈初始化IoC容器(Spring核心容器 / Spring容器),通过容器获取bean

🍔DI入门案例

🎈步骤

🏳️‍🌈删除使用new的形式创建对象的代码

🏳️‍🌈提供依赖对象对应的setter方法

🏳️‍🌈配置service与dao之间的关系


🎈代码实现

首先创建一个maven项目

在pom.xml文件中添加下面的代码

xml 复制代码
 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

然后点击右边框的maven,刷新一下

看到有依赖,即可

然后右击resource,创建xml文件

剩下的代码我放到网盘里面了,里面是完整代码,需要的请自取
我用夸克网盘分享了「spring_01_quickstart」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/24e5655c7d18


通过这两个简单的示例,我们已经领略了Spring IoC和DI核心思想的魅力------解耦和注入。当然实际应用中,Spring的功能远不止这些。但如果能把这些基础概念牢记于心,那么您已经准备好开启Spring框架的学习和应用之旅了。

学到这里,你是否也开始有些Chapter Spring的欲望了呢?那么就在评论区留下你的想法吧,我们一起学习这个 Java世界的扛把子框架,see you next!

相关推荐
斌斌_____7 分钟前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@16 分钟前
Spring如何处理循环依赖
java·后端·spring
一个不秃头的 程序员38 分钟前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
丁总学Java1 小时前
--spring.profiles.active=prod
java·spring
上等猿1 小时前
集合stream
java
java1234_小锋1 小时前
MyBatis如何处理延迟加载?
java·开发语言
菠萝咕噜肉i1 小时前
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
java·mybatis·框架·半自动
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
林的快手1 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode
weisian1512 小时前
Redis篇--常见问题篇8--缓存一致性3(注解式缓存Spring Cache)
redis·spring·缓存