xml配置bean
-
属性配置
1.属性配置必须要求实体类总存在无参构造方法
2,属性配置标签property-> name,value
<bean id="student" class="com.example.demo.entity.Student"> <property name="name" value="张三"></property> <property name="age" value="22"></property> </bean>
-
构造方法配置
1.构造方法会涉及到重载,则在配置bean是需要针对相应的参数的类型,位置进行详细的指出
2.构造方法配置使用标签constructor-arg
<bean id="student" class="com.example.demo.entity.Student"> <constructor-arg value="zhansna" index="0" type="java.lang.String"></constructor-arg> <constructor-arg value="12" index="1" type="int"></constructor-arg> </bean>
3.在使用构造方法设置属性,会涉及到特殊字符情况下需要使用CDATA来进行特殊字符内容的包裹
<bean id="student" class="com.example.demo.entity.Student"> <constructor-arg> <value> <![CDATA[<张三`>]]> </value> </constructor-arg> <constructor-arg value="12" index="1" type="int"></constructor-arg> </bean>
4.属性值不光可以通过value属性值进行诸如,还可以使用value子节点进行注入
-
bean配置中对象之间互相的引用
在使用对象之间引用时,可以使用ref指向配置好的对象
<bean id="student" class="com.example.demo.entity.Student"> <property name="name" value="张三"></property> <property name="age" value="22"></property> <property name="school" ref="school"></property> </bean> <!--School配置--> <bean id="school" class="com.example.demo.entity.School"> <property name="schoolName" value="清华大学"></property> <property name="schoolAddress" value="北京市海淀区"></property> </bean>
除了使用ref指向,还可以使用配置内部bean的方式来实现对象之间的相互调用
```
<!--内部bean配置-->
<!--配置外部bean信息-->
<bean id="stu" class="com.example.demo.entity.Student">
<property name="name" value="Rose"></property>
<property name="age" value="23"></property>
<property name="school">
<!--配置内部bean-->
<bean class="com.example.demo.entity.School">
<property name="schoolName" value="北京大学"></property>
<property name="schoolAddress" value="北京市海淀区"></property>
</bean>
</property>
</bean>
```
- 集合属性配置
1.list配置:标签list
引用外部配置的bean
<!--配置课程-->
<bean id="course_chinese" class="com.example.demo.entity.Course">
<property name="id" value="10001"></property>
<property name="name" value="Chinese"></property>
<property name="source" value="89.9"></property>
</bean>
<bean id="course_english" class="com.example.demo.entity.Course">
<property name="id" value="10002"></property>
<property name="name" value="English"></property>
<property name="source" value="70.6"></property>
</bean>
<bean id="course_math" class="com.example.demo.entity.Course">
<property name="id" value="10003"></property>
<property name="name" value="Math"></property>
<property name="source" value="90.5"></property>
</bean>
<!--list集合配置:引用外部配置的课程-->
<bean id="stu1" class="com.example.demo.entity.Student">
<property name="name" value="Tims"></property>
<property name="school" ref="school"></property>
<property name="age" value="26"></property>
<property name="courses">
<list>
<ref bean="course_chinese"></ref>
<ref bean="course_english"></ref>
<ref bean="course_math"></ref>
</list>
</property>
</bean>
内部配置的bean
<!--list集合配置:内部配置的课程-->
<bean id="stu2" class="com.example.demo.entity.Student">
<property name="name" value="Java"></property>
<property name="school" ref="school"></property>
<property name="age" value="26"></property>
<property name="courses">
<list>
<bean class="com.example.demo.entity.Course">
<property name="id" value="10001"></property>
<property name="name" value="Chinese"></property>
<property name="source" value="89.9"></property>
</bean>
<bean class="com.example.demo.entity.Course">
<property name="id" value="10002"></property>
<property name="name" value="English"></property>
<property name="source" value="70.6"></property>
</bean>
<bean class="com.example.demo.entity.Course">
<property name="id" value="10003"></property>
<property name="name" value="Math"></property>
<property name="source" value="90.5"></property>
</bean>
</list>
</property>
</bean>
2.针对集合配置中还有set,数组(array)配置方式都一样,唯一区别就是针对不同数据结构使用的标签不一样而已
3.map配置 使用标签map,entry,key,value-ref
<!--map配置-->
<bean id="position" class="com.example.demo.entity.Position">
<property name="position">
<map>
<entry key="monitor" value-ref="stu1"></entry>
<entry key="commissaryInChargeOfStudies" value-ref="stu2"></entry>
</map>
</property>
</bean>
4.Properties配置 使用标签props,prop
<!--Properties属性配置-->
<bean id="properties" class="com.example.demo.entity.DataSource">
<property name="properties">
<!--模拟数据库连接配置信息-->
<props>
<prop key="username">root</prop>
<prop key="password">12345678</prop>
<prop key="jdbcurl">jdbc:mysql://......</prop>
<prop key="driverClass">com.mysql.jdbc.Driver</prop>
</props>
</property>
</bean>
- 配置独立的bean共外部多个对象去使用,避免每次针对不同对象都的在xml文件中配置
<!--util进行配置-->
<!--courses集合可以在xml文件中随处被调用,也就是将courses独立出来,便于别的对象直接关联-->
<util:list id="courses">
<ref bean="course_math"></ref>
<ref bean="course_english"></ref>
<ref bean="course_chinese"></ref>
</util:list>
<bean id="stu5" class="com.example.demo.entity.Student">
<property name="name" value="JSON"></property>
<property name="age" value="33"></property>
<property name="school" ref="school"></property>
<property name="courses" ref="courses"></property>
</bean>
- p命名空间进行配置,相对于传统的配置方式更加的简洁
<!--p命名空间进行配置-->
<bean id="stu4" class="com.example.demo.entity.Student" p:name="Rose" p:age="22" p:courses-ref="course_math"
p:school-ref="school">
</bean>