Spring依赖注入的几种方式
Spring核心容器就是一个大工厂,所有的对象都会被当成Spring核心容器管理的对象——Spring把容器的中一切对象统称为Bean。对于Spring框架而言,一切Java对象都是Bean。(引)
依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。(引)
首先创建Car类,有三个属性,提供get()和set()方法,并且提供带参数的构造器以及无参数的构造器
创建对应的配置文件spring-di.xml
1.通过Set方式注入
在spring-di.xml
配置文件中
使用<property/>
标签来进行依赖注入(此标签在新版本Spring中是一个单标签)
name值即为实体类中相应的属性值
value的值即为想要赋的值
set方式依赖注入需要实体类提供set方法
创建测试类,调用对象的toString方法
2.通过构造器方式注入
在spring-di.xml
配置文件中
使用<constructor/>
标签进行依赖注入(此标签在新版本Spring中是一个单标签)
index来指定参数的位置,value指定值,type可以指定参数的类型用来确保依赖注入不会发生错误
使用构造器的方式进行依赖注入需要实体类提供一个有参数的构造器
(Spring本身使用一个无参数的构造器,所以使用构造器方式进行依赖注入时实体类必须有两个构造器)
编写测试类,调用对象的toString()方法
(特)使用p命名空间配置bean
使用p命名空间的语法配置bean并不属于依赖注入
首先在配置文件的头部中添加一行
xmlns:p="http://www.springframework.org/schema/p
接着在spring-di.xml中使用p命名空间进行bean的配置
这种配置bean的方式使得代码简洁许多
编写测试类进行测试
三种方式都可以实现bean的配置,具体的使用还是看个人的习惯以及场景适用