在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Spring框架实现依赖注入操作步骤解析。Dependency Injection是spring框架核心 ioc 的具体实现。程序在编写时通过控制反转把对象的创建交给了spring,但是代码中不可能出现没有依赖的情况。ioc 解耦只是降低他们的依赖关系但不会消除,坐等框架把持久层对象传入业务层而不用我们自己去获取。
依赖注入作用是在使用Spring框架创建对象时,动态的将其所依赖的对象注入到Bean组件中,其实现方式通常有两种一种是属性setter方法注入,另一种是构造方法注入。
属性setter方法注入:指IoC容器使用setter方法来注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter方法即可实现基于setter方法的依赖注入。
构造方法注入:指IoC容器使用构造方法来注入被依赖的实例。基于构造方法的依赖注入通过调用带参数的构造方法来实现,每个参数代表着一个依赖。
了解了两种注入方式后,下面以属性setter方法注入的方式为例讲解Spring容器在应用中如何实现依赖注入。
1、在com.itheima.ioc包中,创建接口UserService,在接口中编写一个say()方法:
UserService.java
2、在com.itheima.ioc包中创建UserService接口的实现类UserServiceImpl,在类中声明userDao属性,并添加属性的setter方法:
UserServiceImpl.java
3、在配置文件applicationContext.xml中创建一个id为userService的Bean,该Bean用于实例化UserServiceImpl类的信息并将userDao的实例注入到userService中,其代码如下:
在上述代码中<property>是<bean>元素的子元素,它用于调用Bean实例中的setUserDao()方法完成属性赋值,从而实现依赖注入。其name属性表示Bean实例中的相应属性名,ref属性用于指定其属性值。
4、在com.itheima.ioc包中创建测试类TestDI,来对程序进行测试,编辑后所示:
文件2 TestDI.java
5、执行程序后控制台的输出结果如图:
运行结果
从上图可以看出使用Spring容器通过UserService实现类中的say()方法,调用了UserDao实现类中的say()方法并输出了结果。这就是Spring容器属性setter注入的方式也是实际开发中最为常用的一种方式。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java入门基础语法笔记之数组
对于刚刚入门Java的小白来讲,Java基础语法知识是学习的第一步,也是十分重要的一步。因此建议大家在学习初期就构建一套系统的学习大纲,并且边学边总结归纳,这样学下来就不至于好像什么都懂了,又好像什么都不懂。本文将为大家分享关于数组的Java入门基础语法笔记,希望大家把基础语法都像这样整理出来,方便日后的复习和梳理。下面让我们一起看看吧!
4788
2019-12-02 12:40:35
Java程序员常用的开源工具汇总
工欲善其事必先利其器,在大家成为一个经验丰富的Java程序员之前,除了需要不断精进自己的专业技术,还要掌握一些好用的开源工具,才能在工作中事半功倍,提高开发效率。因此本文汇总了一些Java程序员的常用开源工具,包括了Selenium、Git、Notepad++、Gradle、Tomcat、Jenkins、JIRA、Docker、Spock和Maven。下面一一把这些开源工具介绍给大家。
3929
2020-02-25 11:59:25
Nginx入门学习之应用场景
每当网站访问量较高的时候,网站的反应速度就变得非常缓慢,特别是图片、css、js等这些静态资源的加载,这个时候应该怎么办呢?其实只需一个Nginx就可以轻松解决上述问题,因为Nginx擅长处理像图片、css这样的静态资源。下面我们就开始入门学习Nginx的三大应用场景吧!
3901
2020-08-14 15:41:34
Java字节流输入输出数据的常用方法介绍
字节流由字节组成,在计算机中无论是文本、图片、音频还是视频所有文件都是以二进制(字节)形式存在,根据数据的传输方向可将其分为字节输入流和字节输出流。
3458
2021-04-23 13:53:46
缓存的淘汰策略有几种方式?分别怎么用?
缓存的淘汰策略有几种方式? 缓存是将一些需要读取数据放在磁盘或者内存中,由于是追求速度从而一般放在内存中。在有些场景中无法解决读的速度,因此要使用缓存,而缓存有容量有限,若缓存满了系统会如何淘汰一些数据?
3104
2022-03-24 14:48:17