乐鱼电竞

  • 教育行业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 {
             // 声明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注入的方式,也是实际开发中最为常用的一种方式。




    猜你喜欢:

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

    两种RDD的依赖关系介绍

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

    乐鱼电竞Java后端培训课程

    0 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】