ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring框架怎样实现依赖注入?

2021-05-19 16:01:20  阅读:172  来源: 互联网

标签:依赖 userDao 属性 框架 Spring say UserService 注入 setter


依赖注入的作用就是在使用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 {
         // 声明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 !");
         }
     }

(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) {
             //1.初始化spring容器,加载配置文件
             ApplicationContext applicationContext = 
                  new ClassPathXmlApplicationContext("applicationContext.xml");
             //2.通过容器获取UserService实例
             UserService userService = 
                 (UserService) applicationContext.getBean("userService");
             //3.调用实例中的say()方法
             userService.say();
         }
     }

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

1621246844699_依赖注入.png

图1 运行结果

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


标签:依赖,userDao,属性,框架,Spring,say,UserService,注入,setter
来源: https://blog.51cto.com/u_15128443/2786254

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有