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>

浙公网安备 33010602011771号