spring框架怎么实现依赖注入?

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

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

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

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

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

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

文件1 UserService.java

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

 package com.itheima.ioc;     public class UserServiceImpl implements UserService {         // 声明UserDao属性         private UserDao userDao;         // 添加UserDao属性的setter方法,用于实现依赖注入         public void setUserDao(UserDao userDao) {             this.userDao = userDao;         }         // 实现的接口中方法         public void say() {             //调用userDao中的say()方法,并执行输出语句             this.userDao.say();             System.out.println("userService say hello World !");         }     }

文件2 UserServiceImpl.java

(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所示。

 package com.itheima.ioc;     import org.springframework.context.ApplicationContext;     import          org.springframework.context.support.ClassPathXmlApplicationContext;     public class TestDI {         public static void main(String[] args) {             //1.初始化spring容器,加载配置文件             ApplicationContext applicationContext =                   new ClassPathXmlApplicationContext("applicationContext.xml");             //2.通过容器获取UserService实例             UserService userService =                  (UserService) applicationContext.getBean("userService");             //3.调用实例中的say()方法             userService.say();         }     }

文件2 TestDI.java

(5)执行程序后,控制台的输出结果如图1所示。

spring框架怎么实现依赖注入?

图1 运行结果

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

-END-

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263301.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月15日 09:08
下一篇 2023年5月15日 09:08

相关推荐

  • 我来分享网站建设搜索框架需要怎样的的设计原则。

    经常浏览网站的人应该都非常的清楚,当我们浏览网页时,搜索框是我们访问网站最后的一个关卡,一旦网站中有很多的产品,服务,功能时,这时如果我们想要找到自己想要的内容,搜索框成为了必备的工具,它能帮助我们…

    2023年6月12日
    06
  • 网站设计中页面优化要注意的要点

    企业在网站设计时,不要只想着网站后期的优化,其中网站的页面优化,也是很重要的,在网站建设的过程中也需要着重考虑。因为页面优化在搜寻引擎优化中是一个最基本的内容,同时也是要点,但是很多站长因为对页面优…

    2019年10月23日
    0197
  • 如何利用UDP实现群聊聊天室?

    大家好,今天为大家带来了一个非常有意思的小程序——UDP实现的群聊聊天室。这个程序使用的UDP协议,并使用DatagramSocket的子类MulticastSocket实现组播,可以部署在一个局域网内的多台电脑上,并可以实现文字群聊。…

    2023年5月12日
    06
  • 教你junit框架原理。

    JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。 Java之Junit框架如何使用 JUnit是Java编程语言…

    2024年7月10日
    00
  • PHP中的Laravel框架指南。

    Laravel是一款流行的PHP Web应用程序框架,它为Web开发带来了很多便利和创新。在这篇文章中,我们将向你介绍Laravel的基础知识以及如何使用它来构建Web应用程序。Laravel的简介Laravel是一款自2011年以来不断发展壮…

    2023年5月30日
    03
  • 我来分享前端技术人员经常用到的框架是什么。

      网站开发公司在做网站时,前端技术人员会常用的一些框架介绍给大家参考。  Angular   Angular是一款优秀的前端JS框架,已经被用于Google的多款产品中,其具有很多特性,如MVW、模块化、自动化双向数据绑定、语义…

    2023年6月15日
    03
  • 经验分享如何添加加载项。

    在软件中,通常通过设置或工具菜单找到“加载项”或“插件”选项,选择需要添加的加载项进行安装。具体步骤因软件而异。 (图片来源网络,侵删) 在计算机软件中,加载项(Addons)是一种扩展功能,可以增强现有程序的…

    2024年6月27日
    00
  • 小编分享满就送功能新旧功能对比。

         淘宝满就送是淘宝卖家的一款很实用的店铺推广助手。满就送在买家心理上下功夫,获得了不错的推广效果。如今,满就送又优化了,对于广大卖家来说更简化了操作。     1、 赠品可直接选择在架商品,不需要手动输…

    2023年10月25日
    01

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息