1.4 两个案例带你精通 依赖注入
在1.3节我们稍微提了一下依赖注入的相关知识,其实就是对实体类的属性进行赋值。
接下来我会详细对依赖注入展开叙述。
一、三种注入方式
1、set注入
这时目前Spring中最为常见的一种注入方式,使用时,需要现在实体类中创建实体类的无参构造函数、以及各个属性的setter方法。
2、构造注入
构造注入指的是Spring容器调用构造方法注入被依赖的实例构造方法可以是含参的也可以是无参的。Spring在读取配置信息后,会通过反射的方式调用实例的构造方法,如果是含参构造,可以现在构造方法中传入所需的参数值,然后创建类对象。
3、注解注入
其实,除了以上两种注入方式,我们还有第三种注入方式,那就是注解的方式进行依赖注入,这个会在第二章讲解Bean管理的时候为大家阐述。

二、两个案例带你轻松搞定两种注入方式
1、set注入
这是最常用的一种注入方式,接下来我将详细的阐述相关步骤。
(1)创建Maven项目,在pom.xml中导入相关依赖:
(2)创建实体类Student,为其创建若干私有属性、私有属性的set方法、toSpring方法。
(3)创建配置文件:applicationContext.xml,并在其中配置Spring容器的Bean对象,并使用Setter注入的方式为属性赋值。
其中,property元素的name属性指定该类的成员变量名称,vlaue属性提供对应的成员变量的注入值。
(4)创建测试类StudentsTest,测试我们注入的值是否可以正常输出,
(5)运行测试类查看结果

可以看到,我们刚刚给实体类注入的所有值都被输出了,证明注入成功。
2、构造注入
构造注入不太常用,我认为其中一个原因就是它是过反射的方式调用实例的构造方法实现注入。在1.3节我们也提到了,Spring框架的反射依赖方式对性能的损耗是特别大的,会影响整体项目的效率。接下来我会通过一个案例来给大家介绍一下构造注入的步骤。
(1)pom.xml的依赖和set注入的依赖相同,这里不再赘述
(2)创建实体类Students,这里不同的是,我们需要创建实体类的含参构造函数,不需要set方法,再创建一个show用于输出信息。
(2)创建配置文件applicationContext.xml,并在其中配置Spring容器的Bean对象,并使用构造注入的方式为属性赋值。
其中constructor-arg元素用于给Students类构造方法的参数注入值(不区分属性的顺序,须通过name属性指定参数),Spring通过Students类的构造方法获取constructor-arg元素定义的值,最终这些值会被赋值给Spring创建的Students对象。
(4)创建测试类,这里的测试类和Setter注入的测试类相同,就不再赘述。
(5)运行结果

看到结果正常输出就可以说明注入成功。
在使用注入的时候,一定要搞清楚自己使用的是哪一种注入方式,不要混淆。
以上就是对两种注入方式的案例介绍相信大家一定有所收获。

到本篇文章结束,我们已经介绍了Spring的基本情况,包括项目创建,创建形式,依赖导入、注入形式等等。在编写本章专栏的过程中,作者也是第一次学习,难免会犯不少的低级错误。比如因为单词拼写错误导致的报错,我花费了半天的时间才找得到,又或者注入时,没有搞清楚自己使用的是哪一种注入方式,标签、构造方法报红,等等,这些教训我都融入了每一篇文章中,大家尤其注意彩色字体,说不定大家也会栽坑呢。
最后希望大家多多评论指正错误,一起学习,一起进步。