Spring学习笔记

     <!--IOC控制反转是一种思想,依赖注入是这种思想的具体实现  -->
     <!--
         <bean>:定义Spring所管理的一个对象     
         id:该对象的唯一标识 注意:不能重复;在通过类型获取bean的过程中可以不设置
         class:此对象所属类的全限定名
         
   -->
     <bean id="personOne" class="com.atguigu.spring.mod.Person">
     <!-- 
         DI(Dependency Insert):依赖注入,是控制反转的具体实现,相当于给涉及到的对象赋值
         <property>:为对象的某个属性赋值
         name:属性名
         value:属性值
      -->
         <property name="id" value="1111" ></property><!-- set注入:跟使用set方法赋值一样 -->
         <property name="name" value="小米" ></property>
     </bean>
     <bean id="personTwo" class="com.atguigu.spring.mod.Person">
         <property name="id" value="1112" ></property>
         <property name="name" value="小明" ></property>
     </bean>
</beans> 

属性注入方法:(一般使用第一种)

 
    <bean id="s1"  class="com.atguigu.spring.di.Student">
    <!--set注入 -->
         <property name="id" value="10010"></property><!-- 相当于set方法 -->
         <property name="name" value="张三"></property>
         <property name="age" value="23"></property>
         <property name="sex" value="男"></property>
         
     </bean> 
     <!--构造方法注入 通过指定index和type来确认对应的属性 -->
    <bean name="s2" class="com.atguigu.spring.di.Student">
         <constructor-arg value="10086"></constructor-arg><!-- 自动调用有参构造函数 -->
         <constructor-arg value="李四"></constructor-arg>
         <constructor-arg value="24" index="2" type ="java.lang.Integer"></constructor-arg>
         <constructor-arg value="女"></constructor-arg>
     </bean>
     
          <!--构造方法注入  -->
    <bean name="s3" class="com.atguigu.spring.di.Student">
         <constructor-arg value="10022"></constructor-arg><!-- 自动调用有参构造函数 -->
         <constructor-arg value="王五"></constructor-arg>
         <constructor-arg value="98" ></constructor-arg>
         <constructor-arg value="女"></constructor-arg>
     </bean>
    <!-- p命名空间注入-->
     <bean id="s4" class="com.atguigu.spring.di.Student" p:id="10033" p:name="赵六" p:age="26" p:sex="男"></bean>
 
 </beans>

 

非字面量的注入:

1)外部bean 引用ref

    
     <bean id="s5"  class="com.atguigu.spring.di.Student">
         <property name="id" value="10055"></property><!-- 相当于set方法 -->
         <property name="name" value="张三三"></property>
         <property name="age" value="23"></property>
         <property name="sex" value="男"></property> <!-- 字面量:直接使用value设值 -->
         <property name="teacher" ref="teacher"></property><!-- 非字面量:使用 ref用来引用当前Spring管理的对象-->
         <property name="teacher.tname" value="小红"></property><!-- 级联属性赋值 -->
     </bean> 
     
     <bean id="teacher" class="com.atguigu.spring.di.Teacher">
         <property name="tid" value="10000"></property>
         <property name="tname" value="小明"></property>
         
     </bean>

2)内部bean注入

     <bean id="s6"  class="com.atguigu.spring.di.Student">
         <property name="id" value="10066"></property><!-- 相当于set方法 -->
         <property name="name" value="崔八"></property>
         <property name="age" value="18"></property>
         <property name="sex" value="男"></property> <!-- 字面量:直接使用value设值 -->
         <property name="teacher"><!--使用内部bean给对象属性赋值 ,内部bean只能被当前bean访问,外部无法访问 -->
             <bean id="tt" class="com.atguigu.spring.di.Teacher">
             <property name="tid" value="2222"></property>
             <property name="tname" value="admin"></property>
             </bean>
         </property>
     </bean> 

 

一对多注入List

        <!-- 一对多对象list -->
          <bean id="t2" class="com.atguigu.spring.di.Teacher">
         <property name="tid" value="1002"></property>
         <property name="tname" value="婷姐"></property>
         <property name="sList">
             <list>
                <ref bean="s1"/>
                <ref bean="s2"/>
                <ref bean="s3"/>
                <ref bean="s4"/>
             </list>
         </property>
     </bean>

注入map

     <bean id="t3" class="com.atguigu.spring.di.Teacher">
         <property name="tid" value="1003"></property>
         <property name="tname" value="admin"></property>
         <property name="bossMap">
             <map>
                <entry>
                    <key>
                        <value>1001</value>
                    </key>
                    <value>佟老师</value>
                </entry>
                
                <entry>
                    <key>
                        <value>1002</value>
                    </key>
                    <value>陈老师</value>
                </entry>
             </map>
         </property>
     </bean>

 

posted @ 2021-11-17 22:12  donkey8  阅读(30)  评论(0)    收藏  举报