zoukankan      html  css  js  c++  java
  • Spring:Ioc(依赖注入)

    一.ioc

    之前程序是主动创建对象,控制权在程序员手上

    ioc容器:通过容器来管理对象的创建,“控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器

    ioc作用:程序员不用再去管理对象的创建了,系统的耦合性大大降低,可以更加专注在业务的实现上

    二、依赖注入(Dependency injection)

    依赖:值Bean对象的创建依赖于容器,Bean对象的依赖资源

    注入:指Bean对象所依赖的资源,由容器来设置和装配

    1.构造器注入:

     第一种,下标赋值
        <bean id="user" class="com.zh.pojo.User">
            <constructor-arg index="0" value="spring"/>
        </bean>
        第二种方式通过类型使用,不建议使用
        <bean id="user" class="com.zh.pojo.User">
            <constructor-arg type="java.lang.String" value="zh1"/>
        </bean>
        第三种 直接通过参数名来设置
        <bean id="user" class="com.zh.pojo.User">
            <constructor-arg name="name" value="zh2"/>
        </bean>
    

    2.Set注入

    要求被注入的属性必须要有set方法

            <!--第一种 常量注入注入 value-->
            <property name="name" value="zh"/>
            <!--第二种 bean注入,ref-->
            <property name="address" ref="address"/>
            <!--第三种数组注入-->
            <property name="books">
                <array>
                    <value>西游记</value>
                    <value>水浒传</value>
                    <value>三国演义</value>
                    <value>红楼梦</value>
                </array>
            </property>
            <!--第四种list注入-->
            <property name="hobbies">
                <list>
                    <value>骑行</value>
                    <value>唱歌</value>
                    <value>跳舞</value>
                </list>
            </property>
            <!--第五种Map注入-->
            <property name="card">
                <map>
                    <entry key="中国银行" value="原油"/>
                    <entry key="中国邮政" value="快递"/>
                    <entry key="中国移动" value="通信"/>
                </map>
            </property>
            <!--第六种 set注入-->
            <property name="games">
                <set>
                    <value>LOL</value>
                    <value>DNF</value>
                    <value>CF</value>
                </set>
            </property>
            <!--第七种 null注入-->
            <property name="wife">
                <null/>
            </property>
            <!--第八种 properties注入-->
            <property name="info">
                <props>
                 <prop key="学号">201908080145</prop>
                    <prop key="name">zh</prop>
                    <prop key="age">29</prop>
                </props>
            </property>
        </bean>
    

    3.p命名空间注入

    <!--p命名空间约束-->
    xmlns:p="http://www.springframework.org/schema/p"
    <!--p命名空间注入,可以直接注入属性的值:property-->
    <bean id="user" class="com.zh.pojo.User" p:age="18" p:name="zh" scope="singleton"/>
    

    4.c命名空间注入

    <!--c命名空间约束-->
     xmlns:c="http://www.springframework.org/schema/c"
    <!--c命名空间注入,通过构造器注入:construct-orgs-->
        <bean id="user2" class="com.zh.pojo.User" c:age="19" c:name="zfl" scope="prototype"/>
    
  • 相关阅读:
    多角度分析平台即服务?PaaS的类型和用例
    2021.3.10 Android导出Excel表
    2021.3.9 个人作业阶段2
    2021.3.8 Android图像视图1
    2021.3.7 Android图像视图
    2021.3.6 Android页面刷新
    2021.3.5 个人作业1+家庭记账本(8)
    2021.3.4 家庭记账本(7)
    2021.3.3 Android项目打包+家庭记账本(6)
    2021.3.2 开课博客+家庭记账本(5)
  • 原文地址:https://www.cnblogs.com/zh93/p/12861217.html
Copyright © 2011-2022 走看看