Spring spring

Spring中文网站 > Spring Boot > Spring的注入是什么意思 Spring注入有什么用
Spring的注入是什么意思 Spring注入有什么用
发布时间:2026/06/30 15:02:31

品牌型号:联想ThinkPad X1

系统:Windows10家庭版

软件版本:Spring 5.3.7

Spring能成为我们Java开发领域里绕不开的框架,主要还是因为它帮我们从根本上改变了对象之间交互的方式,之前我们写Java项目时一个类要调用另一个类提供的功能,基本都是自己手动new一个对象出来,这种做法会让类与类耦合度极高。Spring把对象的创建和组装都交给容器去做,我们不用操心这些细节。但很多刚接触Spring的开发者对Spring的注入不太理解,注入到底指的是什么动作,平时写代码加的那些注解又是在干什么的,接下来,就给大家介绍一下Spring的注入是什么意思,Spring注入有什么用的相关内容。

一、Spring的注入是什么意思

我们先别急着去理解什么是Spring注入,先来看看在没有Spring时代码的写法,一个类如果要用到另一个类的功能,通常的做法是在代码里直接new一个对象出来用。

传统硬编码方式
图1:传统硬编码方式

这样写不会报错,但随着代码越写越多会发现代码里到处散落着new出来的对象,类和类之间的关系全靠这种硬编码的方式维系着,如果更换依赖实现,所有用到它的地方都得跟着改,会大幅提高维护成本。

传统硬编码方式
图2:传统硬编码方式

Spring的注入,简单来说就是把创建依赖对象、管理依赖的事,交给了容器处理。我们不再去类中手动new依赖对象,而是在类中通过构造器、setter方法、或者是在字段上加上注解来声明需求告知容器我们需要什么,这样容器在启动的时候才会把我们需要的依赖对象塞到需要的类中,这就是注入。

setter方法注入
图3:setter方法注入

注入的方式主要是构造器注入、setter注入和字段注入这三种,具体用哪种,看我们使用场景和开发习惯。

二、Spring注入有什么用

弄清楚注入是什么之后,值得我们思考的是这套机制到底解决了我们什么样的开发问题,不然只知道个概念,体会不到它的价值。在没有Spring注入的时候,我们在类里通过硬编码的方式直接new依赖对象,这个类就和具体的实现类绑死了,而现在使用Spring注入能有效降低我们代码的耦合度。

硬编码方式
图4:硬编码方式

之前传统写法里如果要换个实现,比如把某个接口的实现类从A换成B,所有手动new过A的地方都得挨个去改,有了Spring注入之后,类只声明自己依赖某个接口,具体注入哪个实现,是容器和配置说了算,类本身的代码完全不用动,换实现这件事变得轻松很多。

使用配置类决定注入哪个实现
图5:使用配置类决定注入哪个实现

有了Spring注入之后,我们做单元测试会简单很多,如果依赖都是写死在代码里的,测试的时候很难替换成mock对象,也就没法做到真正的隔离。通过注入的方式,如果是构造器注入,测试时可以很方便地把依赖换成测试用的假对象,我们只需要专注测当前这个类的逻辑,不用牵扯到真实的数据库连接或者外部服务。

单元测试
图6:单元测试

使用Spring注入可以减少我们重复创建对象带来的资源浪费,很多对象其实没必要每次用都重新创建一份,容器可以按需控制是单例还是多例统一调度,我们根本不用操心这些细节。

以上就是Spring的注入是什么意思,Spring注入有什么用的全部内容了。Spring注入的意思就是说类不用再由我们操心依赖怎么来,只管声明需要什么,剩下的事交给容器去办。这种转变带来的好处也很直接,代码耦合度降下来了,换实现不用大改,测试的时候也能轻松替换掉真实依赖,做到真正的隔离。

 

180 1563 6924