依赖注入概念
依赖注入: Dependency Injection ,它是spring框架核心IoC的具体实现。
通过控制反转,把对象的创建交给了spring,但是代码中不可能出现没有依赖的情况,IoC解耦只是降低他们的依赖关系,但不会消除。例如业务层仍会调用持久层的方法,那么使用spring去维护这种业务层和持久层的依赖关系,就是DI的作用。
简单的说,就是坐等框架把对象传入,而不用我们自己去获取。
注入的方式
通过构造函数注入
涉及的标签:constructor-arg,该标签是写在bean标签内部的子标签
标签的属性:
- type:指定要注入的参数在构造函数中的类型
- index:指定要注入的参数在构造函数的索引位置
- name:指定参数在构造函数中的名称
- value:指定注入的数据内容,只能指定基本类型数据和String类型数据
- ref:指定其他bean类型数据,写的是其他bean的id,其他bean指的是存在于spring容器中的bean
1 | // 业务层 |
1 | <bean id="accountService" class="com.gsynf.service.impl.AccountServiceImpl"> |
通过set方法注入
涉及的标签:property,该标签是写在bean标签内部的子标签
标签的属性:
- name:指定的是set方法的名称,匹配的是类中set后面的部分
- value:指定注入的数据内容,只能指定基本类型数据和String类型数据
- ref:指定其他bean类型数据,写的是其他bean的id,其他bean指的是存在于spring容器中的bean
1 | // 业务层 |
1 | <bean id="accountService2" class="com.gsynf.service.impl.AccountServiceImpl2"> |
另:
1 | <!-- 约束中导入p名称空间 --> |
通过注解方式注入
这部分在spring的注解会讲到。
注入的内容
基本类型和String类型
如上
其他的bean类型
1 | // 业务层 |
1 | <bean id="accountService" class="com.gsynf.service.impl.AccountServiceImpl"> |
以后开发中,业务层调用持久层交给spring处理会经常采用这种类型。
复杂类型(集合类型)
这个和注入方式没有关系,只是注入的内容变得复杂。
1 | <bean id="accountService4" class="com.gsynf.service.impl.AccountServiceImpl4"> |
1 | // 业务层 |
1 | // 运行结果 |
注:转载文章请注明出处,谢谢~