Spring -- Spring配置文件详解(Bean实例化的三种方式IoC(控制反转) 与 DI(依赖注入)依赖注入详解)
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring -- Spring配置文件详解(Bean实例化的三种方式IoC(控制反转) 与 DI(依赖注入)依赖注入详解)相关的知识,希望对你有一定的参考价值。
01:Spring配置文件详解(Bean标签的基本配置(id,class)/ 范围配置 / 不同范围时的对象的创建时期 / Bean生命周期配置(生命周期方法) )
02: Spring配置文件详解(Bean实例化的三种方式、IoC(控制反转) 与 DI(依赖注入)、依赖注入详解)
03:Spring配置文件详解(Bean的依赖注入的数据类型(基本类型、引用类型、集合类型))
04: Spring配置文件详解(引入其他配置文件(分模块开发)、小结)
1. Bean实例化的三种方式
1.1 使用无参构造方法实例化(重点)
1.2 工厂静态方法实例化
1.3 工厂实例方法实例化
2. IoC(控制反转) 与 DI(依赖注入)
- 控制反转IOC(Inversion of Control),是一种设计思想,DI(Dependency Injection 依赖注入)是IoC的具体实现。
- 采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
- 控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式。在spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)
- 所谓的IoC,一句话搞定 : 对象由Spring 来创建,管理,装配 !
3. 依赖注入详解
3.1 Bean的依赖注入入门
-
创建
UserDaoImpl
-
创建
UserService
,UserService
内部在调用UserDao
的save()
方法
-
将
UserServicelmpl
和UserDaoImpl
交给Spring Ioc容器管理
-
从Spring容器中获得UserService进行操作
-
分析
目前UserService
实例和UserDao
实例都存在与Spring
容器中,当前的做法是在容器外部获得UserService
实例和UserDao
实例,然后在程序中进行结合。
3.2 Bean的依赖注入分析
因为UserService
和UserDao
都在Spring
容器中,而最终程序直接使用的是UserService
,所以可以在Spring
容器中,将UserDao
设置到UserService
内部。
3.3 Bean的依赖注入
(Dependency Injection,DI
)概念
3.4 Bean的依赖注入方式(构造方法、set方法)
3.4.1 set方法注入
-
在UserServicelmpl中添加setUserDao方法
-
配置Spring容器调用set方法进行注入
-
测试代码
public static void main(String[] args) {
//解析beans.xml文件 , 生成管理相应的Bean对象
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//getBean : 参数即为spring配置文件中bean的id .
UserServiceImpl user = (UserServiceImpl) context.getBean("userService");
user.save();
}
- 测试结果:
3.4.2 set方法注入的另外一种方式:P命名空间注入
P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:
- 首先,需要引入P命名空间:
- 修改注入方式
- 运行上面的测试代码:
3.4.3 构造方法注入
-
创建有参构造
-
配置Spring容器调用有参构造时进行注入
-
运行上面的测试代码:
以上是关于Spring -- Spring配置文件详解(Bean实例化的三种方式IoC(控制反转) 与 DI(依赖注入)依赖注入详解)的主要内容,如果未能解决你的问题,请参考以下文章