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

相关推荐

  • Python科学计算库NumPy:唯一化及其他集合逻辑

    针对一维数组,NumPy提供了unique()函数来找出数组中的唯一值,并返回排序后的结果,示例代码如下。In [124]: arr=np.array([12, 11, 34, 23, 12, 8, 11])In [125]: np.unique(arr)Out[125]: array([ 8, 11, 12, 23…

    2023年7月13日
    03
  • php如何使用Symfony6框架。

    Symfony6是一款流行的PHP框架,它提供了一种快速、安全和可靠的方式来建立Web应用程序。如果你是一名开发人员,你需要学会如何使用Symfony6框架。在本文中,我们将为您介绍Symfony6框架,并提供有关如何在PHP中使用…

    2023年6月3日
    03
  • 小编分享js框架怎么使用。

    JavaScript框架是一种用于简化和加速Web开发的工具,它们提供了一种结构化的方式来组织和管理代码,使得开发人员能够更高效地构建复杂的应用程序,在本文中,我们将介绍如何使用JavaScript框架来开发Web应用程序。 …

    2024年6月28日
    04
  • 小编分享网络营销的小知识,你还不看吗。

    网络营销的小知识,你还不看吗? 现在网络营销已经被运用的越来越广,也被越来越多的人所熟知,按照传统营销通俗来说就是为了达到“买与卖”的效果。那么网络营销有哪些功能呢?为什么要做网络营销呢?跟着小编一起来…

    2022年11月10日
    07
  • 小编教你网站功能定位与实施。

    1、企业的经营理念、产品或服务特色    企业网站建设是企业根据自身经营的需要建立起来的,因此首先应当适应企业经营的需要,为企业的经营和营销服务。企业网站建设应充分展示企业主营业务的特色和优势,通过文字,…

    2023年6月19日
    010
  • 微淘商家号发微淘包括哪些功能?。

    微淘商家号发微淘包括哪些功能?最近,新的微淘管理后台上线了。微淘商家号里面有一个发微淘的栏目,发微淘怎么使用呢?既然是新的平台,那么不论是老用户还是新用户,都还不太清楚。下面,开淘小编来介绍下“微淘商家…

    2023年10月27日
    04
  • 小编分享企业网站建设的功能。

    1.开展电子商务:In developing electronic commerce: 电子商务是未来经济形式发展的大趋势,目标是实现交易信息的网络化和电子化,如使用电子货币,开网上商店,进行网上商务谈判和使用电子签名签合同等等。企业…

    2023年6月28日
    06
  • Java开发中常用的框架有哪些?

    什么是框架  “框架(Framework)"一词最早出现在建筑领域,指的是在建造房屋前期构建的建筑骨架。在编程领域,框架就是应用程序的骨架,开发人员可以在这个骨架上加入自己的东西,搭建出符合自己需求的应用…

    2023年5月6日
    04

联系我们

QQ:951076433

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