• Spring IOC 三种注入方式(构造器,setter,接口)


    Spring的依赖注入有三种方式:

    1,构造器注入

    2,setter注入

    3,接口注入

    下面我给大家介绍一下这三种注入

    1.构造器注入

      构造器注入主要是依赖于构造方法去实现,构造方法可以是有参也可以是无参,我们在平常都是通过类的构造方法来创建类对象,以及给他赋值,同样Spring 也可以采用反射的方式,通过构造方法来完成注入注入(赋值),这就是构造器注入的原理,说了那么多我们就来看看代码的实现吧

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    /**
    *
    *  构造器注入  
    *
    */
     
    package com.xiaojiang.Spring;
     
    public class Role {
         
        private int id;
        private String roleName;
        private String note;
         
        public Role(){}
         
        public Role(int id,String roleName, String note)
        {<br>          super();
            this.id = id;
            this.roleName = roleName;
            this.note = note;
        }<br><br>       //setter,getter方法省略
     
    }

    applicationContext.xml文件

    1
    2
    3
    4
    5
    6
    7
    <!--构造器配置-->
     
    <bean id="Role" class="com.xiaojiang.Spring.Role">
            <constructor-arg value="1" type="int"></constructor-arg>
            <constructor-arg value="小江" type="java.lang.String"></constructor-arg>
            <constructor-arg value="有点丑" type="java.lang.String"></constructor-arg>
        </bean>

     constructor-arg元素用于定义类构造方法的参数,其中type用于定义参数的类型,也可以使用index来定义参数的位置,而这里的value是用于设置值,以上的代码就是通过一个Spring去装配一个Bean。

    2.setter注入

      setter是Spring现在最主流的注入方式,它可以利用Java Bean 规范所定义set/get方法来完成注入,可读性灵活性高,它不需要使用构造器注入时出现的多个参数,它可以把构造方法声明成无参构造,再使用setter注入设置相对应的值,其实也是通过java反射技术去实现的.

    类里面的代码set和get方法我就省略了,下面直接上xml代码

    1
    2
    3
    4
    5
    6
    <!--配置setter注入-->
    <bean id="Role" class="com.xiaojiang.Spring.Role">
            <property name="id" value="1"><property>
            <property name="roleName" value="小江"><property>
            <property name="note" value="测试"><property>
    </bean>   

     以上方式就是Spring最主要的方式了,使用广泛

    3.接口注入

          接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入模式,因而在 IOC 的专题世界内并不被看好。

  • 相关阅读:
    GO学习之 为什么选择GO
    Flask学习之 Jinja2模板引擎
    排序算法之归并排序的python实现
    排序算法之快速排序的python实现
    排序算法之希尔排序的python实现
    排序算法之插入排序的python实现
    排序算法之选择排序的python实现
    Android 中正则表达式工具类
    java之从字符串比较到==和equals方法区别
    Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10395987.html
Copyright © 2020-2023  润新知