教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

天富娱乐注册最新网址 Spring框架怎样实现依赖注入?

更新时间:2021年05月18日14时13分 来源:传智教育 浏览次数:

传智教育-一样的教育,不一样的品质

依赖注入的作用就是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到Bean组件中,其实现方式通常有两种,一种是属性setter方法注入,另一种是构造方法注入。具体介绍如下:

● 属性setter方法注入:指IoC容器使用setter方法来注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter方法,即可实现基于setter方法的依赖注入。

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

了解了两种注入方式后,下面以属性setter方法注入的方式为例,讲解一下Spring容器在应用中是如何实现依赖注入的。

(1)在com.itheima.ioc包中,创建接口UserService,在接口中编写一个say()方法,如文件1所示。

文件1 UserService.java

 package com.itheima.ioc; public interface UserService { public void say(); }

(2)在com.itheima.ioc包中,创建UserService接口的实现类UserServiceImpl,在类中声明userDao属性,并添加属性的setter方法,如文件2所示。

文件2 UserServiceImpl.java

 package com.itheima.ioc; public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void say() { this.userDao.say(); System.out.println("userService say hello World !"); } }
(3)在配置文件applicationContext.xml中,创建一个id为userService的Bean,该Bean用于实例化UserServiceImpl类的信息,并将userDao的实例注入到userService中,其代码如下所示。
 <!--添加一个id为userService的实例 --> <bean id="userService" class="com.itheima.ioc.UserServiceImpl"> <!-- 将id为userDao的Bean实例注入到userService实例中 --> <property name="userDao" ref="userDao" /> </bean>

在上述代码中,<property>是<bean>元素的子元素,它用于调用Bean实例中的setUserDao()方法完成属性赋值,从而实现依赖注入。其name属性表示Bean实例中的相应属性名,ref属性用于指定其属性值。

(4)在com.itheima.ioc包中,创建测试类TestDI,来对程序进行测试,编辑后如文件2所示。

文件2 TestDI.java

 package com.itheima.ioc; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestDI { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) applicationContext.getBean("userService"); userService.say(); } }
(5)执行程序后,控制台的输出结果如图1所示。

1621246844699_依赖注入.png

图1 运行结果

从图1可以看出,使用Spring容器通过UserService实现类中的say()方法,调用了UserDao实现类中的say()方法,并输出了结果。这就是Spring容器属性setter注入的方式,也是实际开发中最为常用的一种方式。




猜你喜欢:

什么是依赖注入?如何理解依赖注入?

两种RDD的依赖关系介绍

怎么配置Spring容器中的Bean?【java培训】

传智教育Java后端培训课程

0 分享到:
和我们在线交谈!