Spring学习

Spring学习第二天

Spring通过有参构造获取对象

  1. 参数下标赋值

    <bean id="user" class="cn.kuang.pojo.User">   
    <constructor-arg index="0" value="zheng"/>    
    <constructor-arg index="1" value="13"/>
    
  2. 通过参数类型赋值(不推荐使用)

    <bean id="user" class="cn.kuang.pojo.User">    
    <constructor-arg type="java.lang.String" value="郑智超"/>    
    <constructor-arg type="int" value="32"/>
    
  3. 通过参数名来赋值

    <bean id="user" class="cn.kuang.pojo.User">    
    <constructor-arg name="name" value="詹青云" />   
    <constructor-arg name="age" value="29"/></bean>
    

Spring的配置

  • id:bean 的唯一标识符,也就是相当于我们学的对象名;
  • class:bean 对象所对应的权限定类名:包名+类型;
  • name:也就是别名,而且那么 可以同时取多个别名;
  • import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个假如,现在项目中有多个人开发,单个人复制不荣的类开发,不同的类需要注册不荣的bean中,我们可以利用import将所有人的beans.xml合并为一个总的ApplicationContext。

依赖注入

  • 构造器注入

  • set方式注入【重点】

    依赖注入:set注入!

    • 依赖: bean对象的创建依赖于容器
    • 注入: bean对象中的所有属性,由容器来注入
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="address" class="com.kuang.pojo.Address">
            <property name="address" value="绍兴"/>
        </bean>
        <bean id="student" class="com.kuang.pojo.Student">
            <!--第一种,普通值注入-->
            <property name="name" value="zheng"/>
            <!--第二种,引用值注入-->
            <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>
                </list>
            </property>
            <!--第五种,map注入-->
            <property name="cards">
                <map>
                    <entry value="身份证" key="303255555555"/>
                    <entry value="银行卡" key="248975723497332978"/>
                </map>
            </property>
            <!--第六种,properties注入-->
            <property name="info">
                <props>
                    <prop key="url">百度</prop>
                    <prop key="username">root</prop>
                    <prop key="password">234234</prop>
                </props>
            </property>
            <!--第七种,set集合注入-->
            <property name="game">
                <set>
                    <value>王者荣耀</value>
                    <value>天天象棋</value>
                </set>
            </property>
            <!--第八种,null值注入-->
            <property name="wife" >
                <value>null</value>
            </property>
        </bean>
    </beans>
    
  • 拓展方式注入

    我们可以使用p命名空间和c命名空间进行注入

    官方解释:

    注意事项:p命名和c命名空间不能直接使用,需要导入约束。

原文地址:https://www.cnblogs.com/tianxintang/p/13263653.html