Spring(二)IOC创建 Sprin配置 DI依赖注入

Spring(二)

IOC创建对象方式

  1. 使用无参构造创建,默认!

    <bean id="user" class="com.SpringTest.pojo.User">
            <property name="name" value=""></property>
    </bean>
    
  2. 有参构造创建对象

    • 下标赋值

       <!--第一种 下标赋值-->
          <bean id="user" class="com.SpringTest.pojo.User">
              <constructor-arg index="0" value=""/>
          </bean>
      
    • 通过类型创建(不建议使用)

      <!--第二种 通过类型赋值-->
          <bean id="user" class="com.SpringTest.pojo.User">
              <constructor-arg type="java.lang.String" value=""/>
          </bean>
      
    • 直接通过参数名

       <!--第三种 直接通过参数名赋值-->
          <bean id="user" class="com.SpringTest.pojo.User">
              <constructor-arg name="name" value=""/>
          </bean>
      

    总结:在配置文件加载的时候,容器中管理的对象就已经初始了

Spring 配置

别名:

 <!--别名: alias
name:  原名
alias: 别名
-->
    <alias name="user" alias="user2"/>

Bean的配置:

id : bean 的唯一标识
class:bean对象所对应权限命名:包名 + 类型
name: 也是别名,而且name可以同时取多个别名
<bean id="user" class="com.SpringTest.pojo.User" name="user3">  

import:

这个import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个

    <import resource="Beans.xml"/>
    <import resource="Beans1.xml"/>
    <import resource="Beans2.xml"/>
    <import resource="Beans3.xml"/>
    <import resource="Beans4.xml"/>

DI依赖注入

  1. 构造器注入
  2. set方式注入
  3. 拓展注入

Set方式注入

  • 依赖注入(Set注入)

    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性、由容器来注入

    环境搭建:

    • 复杂类型(Address)
    • 真实测试对象(student)
    • beans.xml
    • 测试类
  • 注入:

    • 普通注入

      <!--第一种:普通注入-->
          <bean id="student" class="com.SpringTest.DI.Student">
              <property name="name" value=""/>
          </bean>
      
    • Bean注入 ref

      <bean id="address" class="com.SpringTest.DI.Address"/>
          <bean id="student" class="com.SpringTest.DI.Student">
              <!--第一种:普通注入-->
              <property name="name" value=""/>
              <!--第二种:Bean注入  ref-->
              <property name="address" ref="address"/>
          </bean>
      
    • 数组注入

       
      <bean id="address" class="com.SpringTest.DI.Address"/>
         <!--第三种:数组注入  -->
              <property name="books">
                  <array>
                      <value>红楼梦</value>
                      <value>水浒传</value>
                      <value>西游记</value>
                      <value>三国演义</value>
                  </array>
      		</property>
         
      </bean>
      
      
    • List 注入

        <bean id="student" class="com.SpringTest.DI.Student">
              <!--第四种:List注入  ref-->
              <property name="hobbies">
                  <list>
                      <value>听歌</value>
                      <value>敲代码</value>
                      <value>看电影</value>
                  </list>
              </property>
          </bean>
      
      
    • Map注入

       
      <bean id="student" class="com.SpringTest.DI.Student">
             <!--第五种:map注入 -->
              <property name="card">
                  <map>
                      <entry key="身份证" value="111111"/>
                      <entry key="银行卡" value="1232123131"/>
                  </map>
              </property>
          </bean>
      
    • Set注入

       
      <bean id="student" class="com.SpringTest.DI.Student">
             <!--第六种:set注入  -->
              <property name="games">
                  <set>
                      <value>LOL</value>
                      <value>COC</value>
                      <value>BOB</value>
                  </set>
              </property>
          </bean>
      
    • null注入

        <!--第七种:Null注入  -->
              <property name="wife">
                  <null/>
              </property>
      
    • property注入

      <!--第八种:property注入  ref-->
              <property name="info">
                 <props>
                     <prop key="driver">99999</prop>
                     <prop key="url"></prop>
                     <prop key="username">root</prop>
                     <prop key="password">123456</prop>
                 </props>
              </property>
      

    结果:

    		Student{name='神', address=Address{address='西安'}, 
            books=[红楼梦, 水浒传, 西游记, 三国演义],
            hobbies=[听歌, 敲代码, 看电影],
            card={身份证=111111, 银行卡=1232123131}, 
            games=[LOL, COC, BOB], wife='null', 
            info={password=123456, url=, driver=99999, username=root}}
    
    • p命名空间可以直接注入属性的值

            <!--p 注入-->
          <bean id="user" class="com.SpringTest.pojo.User" p:name=""/>
      
    • c命名空间通过构造器注入

         <!--c 注入-->
          <bean id="user" class="com.SpringTest.pojo.User" c:name=""/>
      

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

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:c="http://www.springframework.org/schema/c"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd">
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值