Spring spring

Spring中文网站 > Spring Modulith > Spring实例化Bean的三种方式 Spring依赖注入的三种方式
Spring实例化Bean的三种方式 Spring依赖注入的三种方式
发布时间:2026/03/23 14:03:21

品牌型号:联想ThinkPad X1

系统:Windows10家庭版

软件版本:Spring 5.3.7

我们在学习Spring框架的时候,如何实例化bean并完成依赖注入是很基础的操作,也是我们新手入门Spring项目的时候一定会去接触的知识点,IOC控制反转是Spring的核心思想,Bean的实例化决定了对象如何被创建,而依赖注入解决了对象间耦合的问题。很多新手在刚学习使用Spring的时候,经常会把Spring的Bean实例化和依赖注入的不同方式搞混淆,不清楚每个方式的使用场景,接下来我们就来梳理下Spring实例化bean的三种方式,Spring依赖注入的三种方式,希望能帮大家搞懂Spring的基础用法。

一、Spring实例化Bean的三种方式

准确说实例化Bean其实主要是两种方式:一种是底层通过构造方法对Bean进行实例化,另外一种是通过工厂方式进行实例化。通过构造方法实例化,分为无参和有参数。

这里我们就来介绍下有参,我们在类中如果创建了有参构造但是没有手动创建无参构造,会默认去掉无参构造,所以这时候,我们要实例化Bean,就需要手动给这个有参构造传参数,我们可以在配置文件中使用constructor-arg属性手动给这个有参构造传递参数实例化bean。

构造方法实例化bean
图1 :构造方法实例化bean

通过工厂方式实例化Bean,才是真的分成了三种方式,可以使用静态工厂方法实例化Bean。

静态工厂方法实例化Bean
图2:静态工厂方法实例化Bean

也可以使用实例工厂方法实例化Bean。

实例工厂方法实例化Bean
图3:实例工厂方法实例化Bean

还可以实现FactoryBean规范延迟实例化Bean。

实现FactoryBean规范延迟实例化Bean
图4:实现FactoryBean规范延迟实例化Bean

二、Spring依赖注入的三种方式

Spring依赖注入是将依赖对象主动注入到目标Bean中,不再像传统Java Web开发的时候在程序里通过硬编码手动创建依赖的对象,Spring依赖注入彻底解除对象间的耦合。虽然依赖注入的方式有三种,但是这里我们就介绍下setter方法和构造器注入。

我们可以准备一个UserService和一个UserDao,UserService中有一个addUser方法,方法内需要调用UserDao的add方法,我们在UserService创建UserDao属性及这个属性的Setter方法setUserDao。

通过setter方法依赖注入
图5 :通过setter方法依赖注入

找到applicationContext.xml配置文件中目标bean,在bean标签内通过property属性注入依赖Bean对象,就可以完成依赖注入了。

在配置文件中使用property属性注入依赖
图6:在配置文件中使用property属性注入依赖

我们也可以在UserService对象被初始化的时候,就将依赖的Bean注入进来,那我们是不是就可以考虑使用构造方法来进行依赖注入?让我们回忆下什么是构造方法,构造方法就是在构造对象的时候会自动调用的特殊方法。那我们就在UserService的构造方法中下手,创建一个有参的构造。

使用构造方法实现Spring依赖注入
图7:使用构造方法实现Spring依赖注入

不要忘记了,我们既要为了完成依赖注入,也不能忽略UserService自身的实例化,所以我们在applicationContext.xml文件中找到UserService的Bean并使用constructor-arg属性注入UserDao对象。

使用构造方法实现Spring依赖注入
图8:使用构造方法实现Spring依赖注入

以上就是Spring实例化bean的三种方式,Spring依赖注入的三种方式的全部内容了。现在我们已经知道了Spring实例化Bean有两种方式:一种是通过构造方法来实例化,构造方法可以分为有参构造和无参构造,通过有参构造实例化Bean需要借助constructor-arg属性;另外一种就是通过工厂方法进行实例化,工厂方式分为静态工厂方法实例化Bean、实例工厂方法实例化Bean或者可以通过FactoryBean的实现类延迟实例化Bean。Spring依赖注入有三种,可以考虑用构造器注入、接口注入、还可以使用setter方法注入,每种方式都有优缺点,适合不同的业务场景。

读者也访问过这里:
180 1563 6924