为了账号安全,请及时绑定邮箱和手机立即绑定

Spring DI(依赖注入)的实现方式:属性注入和构造注入

标签:
Spring

依赖注入主要有两种实现方式,分别是属性 setter 注入和构造方法注入。具体介绍如下。

1)属性 setter 注入

指 IoC 容器使用 setter 方法注入被依赖的实例。通过调用无参构造器或无参 static 工厂方法实例化 bean 后,调用该 bean 的 setter 方法,即可实现基于 setter 的 DI。

2)构造方法注入

指 IoC 容器使用构造方法注入被依赖的实例。基于构造器的 DI 通过调用带参数的构造方法实现,每个参数代表一个依赖。

下面通过属性 setter 注入的案例演示 Spring 容器是如何实现依赖注入的。具体步骤如下。

1. 创建 PersonService 接口

在 springDemo01 项目的 com.mengma.ioc 包下创建一个名为 PersonService 的接口,该接口中包含一个 addPerson() 方法,如下所示。

package com.mengma.ioc;public interface PersonService {public void addPerson();}

2. 创建接口实现类 PersonServiceImpl

在 com.mengma.ioc 包下创建一个名为 PersonServiceImpl 的类,该类实现了 PersonService 接口,如下所示。

package com.mengma.ioc;public class PersonServiceImpl implements PersonService {// 定义接口声明private PersonDao personDao;// 提供set()方法,用于依赖注入public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}// 实现PersonService接口的方法@Overridepublic void addPerson() {personDao.add(); // 调用PersonDao中的add()方法System.out.println("addPerson()执行了...");}}

上述代码中,首先声明了 personDao 对象,并为其添加 setter 方法,用于依赖注入,然后实现了 PersonDao 接口的 addPerson() 方法,并在方法中调用 save() 方法和输出一条语句。

3. 在 applicationContext.xml 中添加配置信息

在 applicationContext.xml 配置文件中添加一个 <bean> 元素,用于实例化 PersonServiceImpl 类,并将 personDao 的实例注入到 personService 中,其实现代码如下所示:

<bean id="personService" class="com.mengma.ioc.PersonServiceImpl"><!-- 将personDao实例注入personService实例中 --><property name="personDao" ref="personDao"/></bean>

4. 编写测试方法

在 FirstTest 类中创建一个名为 test2() 的方法,编辑后如下所示:

纯文本复制
@Testpublic void test2() {// 定义Spring配置文件的路径String xmlPath = "applicationContext.xml";// 初始化Spring容器,加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 通过容器获取personService实例PersonService personService = (PersonService) applicationContext.getBean("personService");// 调用personService的addPerson()方法personService.addPerson();}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消