Spring依赖注入详解
目录
1. Bean的依赖注入入门
2. Bean的依赖注入分析
3. Bean的依赖注入概念
4. Bean的依赖注入方式
5. Bean的依赖注入的数据类型
5.1 普通数据类型的注入
5.2 集合数据类型(List )的注入
5.3 集合数据类型(Map)的注入
5.4 集合数据类型(Properties)的注入
6. 引入其他配置文件(分模块开发)
7. Spring的重点配置
创建 UserService,UserService 内部在调用 UserDao的save() 方法
UserService
上次是使用创建一个测试类来调用userDao,userDao是由Spring来产生的

这次使用 userService 来调用 userDao
UserServiceImpl
创建一个测试类 UserController 来调用 userService 里的 userDao 实现类的方法
将 UserServiceImpl 的创建权交给 Spring
从 Spring 容器中获得 UserService 进行操作
目前UserService实例和UserDao实例都存在与Spring容器中,当前的做法是在容器外部获得UserService实例和UserDao实例,然后在程序中进行结合。
因为UserService和UserDao都在Spring容器中,而最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到UserService内部。
依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。
IOC 解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
怎么将UserDao怎样注入到UserService内部呢?
构造方法
set方法
1)set方法注入
在UserServiceImpl中添加setUserDao方法
配置Spring容器调用set方法进行注入
property 里的 name 指的是setXXX属性名,把UserDao变成小写开头userDao
ref表示要引用的对象,这里就直接引用前面 bean里面的 id=userDao
要把容器里面的 userDao 通过 userService 里的 userDao 方法注入给它
P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:
首先,需要引入P命名空间:
其次,需要修改注入方式
测试
2)构造方法注入
创建有参构造
上面的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型,集合等都可以在容器中进行注入。
注入数据的三种数据类型
普通数据类型
引用数据类型
集合数据类型
其中引用数据类型,此处就不再赘述了,之前的操作都是对UserDao对象的引用进行注入的,下面将以set方法注入为例,演示普通数据类型和集合数据类型的注入。
<code>List<String></code>是普通数据类型,用 value,如果是 User 或其他对象用 ref
创建 User 类
set 方法注入
value-ref 表示值引用,被引用对象必须要存在于容器当中,才能注入。所以在后面创建user1、user2的同时引用对应的值
Properties 本身是字符串
把上面几个配置的注入对象放在一起,运行后:
实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载
如:在主配置文件中可以引用其他分模块的配置文件
通过如下引用:
引用后,只要加载主配置文件,分文件就会一同被加载了
本文来自博客园,作者:兮动人,转载请注明原文链接:https://www.cnblogs.com/xdr630/p/15618141.html