文章目录
spring-day03
spring特殊值处理
sname属性赋值为null
<bean id="studentfour" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1003"></property>
<property name="sname">
<null></null>
</property>
<property name="age" value="25"></property>
<property name="gender" value="男"></property>
</bean>
sname加入特殊符号
例如:sname:<我是名字>
<bean id="studentfour" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1003"></property>
<property name="sname" value="<我是名字>"></property>
<property name="age" value="25"></property>
<property name="gender" value="男"></property>
</bean>
解释:利用<>来包住名字即可
CDATA节
<bean id="studentfour" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1003"></property>
<property name="sname">
<value><![CDATA[<我是名字>]]></value>
</property>
<property name="age" value="25"></property>
<property name="gender" value="男"></property>
</bean>
解释:同样可以实现,直接在idea中输入CD即可一键生成格式
为类型属性赋值(三种方式)
外部bean直接赋值
<bean id="studentFive" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1005"></property>
<property name="sname" value="赵思"></property>
<property name="age" value="26"></property>
<!-- 外部bean赋值,ref引用容器中某个bean的id,将对应bean为属性赋值-->
<property name="clazz" ref="clazzOne"></property>
</bean>
内部bean
<bean id="studentFive" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1005"></property>
<property name="sname" value="赵思"></property>
<property name="age" value="26"></property>
<property name="clazz">
<!-- bean中再次声明bean就是内部bean-->
<!-- 内部bean用于给属性赋值,不能在外部通过ioc容器获取-->
<bean id="clazzInner" class="com.xinkai.spring.pojo.Clazz">
<property name="clazzId" value="456"></property>
<property name="clazzName" value="哈哈"></property>
</bean>
</property>
</bean>
级联属性赋值
<bean id="clazzOne" class="com.xinkai.spring.pojo.Clazz">
<property name="clazzId" value="111"></property>
<property name="clazzName" value="王者"></property>
</bean>
<bean id="studentSix" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1004"></property>
<property name="sname" value="赵六"></property>
<property name="age" value="26"></property>
<property name="gender" value="女"></property>
<!-- 一定先引用某个bean为属性赋值,才可以使用级联方式更新属性 -->
<property name="clazz" ref="clazzOne"></property>
<property name="clazz.clazzId" value="3333"></property>
<property name="clazz.clazzName" value="你好班"></property>
</bean>
解释:一般不采用级联,因为需要外部创建一个clazz或者手动创建一个clazz对象
为数组属性赋值
<bean id="clazzOne" class="com.xinkai.spring.pojo.Clazz">
<property name="clazzId" value="111"></property>
<property name="clazzName" value="王者"></property>
</bean>
<bean id="student1" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1200"></property>
<property name="sname" value="你好"></property>
<property name="age" value="28"></property>
<property name="gender" value="女"></property>
<property name="clazz" ref="clazzOne"></property>
<property name="hobbies">
<array>
<value>你好</value>
<value>spring</value>
</array>
</property>
</bean>
解释:如果属性是一个数组的话,那么赋值的时候需要在property中加入array里面赋值
为集合类型赋值
<bean id="clazz2" class="com.xinkai.spring.pojo.Clazz">
<property name="clazzId" value="4444"></property>
<property name="clazzName" value="java"></property>
<property name="students">
<list>
<ref bean="studentOne"></ref>
<ref bean="studentFive"></ref>
<ref bean="studentFive"></ref>
</list>
</property>
</bean>
为map类型赋值
<bean id="student3" class="com.xinkai.spring.pojo.Student">
<property name="sid" value="1004"></property>
<property name="sname" value="赵四"></property>
<property name="age" value="26"></property>
<property name="gender" value="女"></property>
<property name="clazz" ref="clazzOne"></property>
<property name="hobbies">
<array>
<value>吃</value>
<value>玩</value>
</array>
</property>
<property name="teacherMap">
<map>
<entry>
<key>
<value>10086</value>
</key>
<ref bean="teacherOne"></ref>
</entry>
<entry>
<key>
<value>10010</value>
</key>
<ref bean="teacherTwo"></ref>
</entry>
</map>
</property>
</bean>
测试代码:
ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
Student student3 = ioc.getBean("student3", Student.class);
System.out.println(student3);
命名空间
<util:map id="teacherMap">
<entry>
<key>
<value>10023</value>
</key>
<ref bean="teacherOne"></ref>
</entry>
<entry>
<key>
<value>10036</value>
</key>
<ref bean="teacherTwo"></ref>
</entry>
</util:map>
<bean id="student6" class="com.xinkai.spring.pojo.Student" p:sid="100223" p:sname="小明"
p:clazz-ref="clazzOne" p:teacherMap-ref="teacherMap"></bean>
引入外部属性文件
// 配置ioc的xml文件
<context:property-placeholder location="jdbc.properties"/>
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
// 外部的properties文件
jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/reggie?serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver
// 测试数据源
ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
DataSource dataSource = ioc.getBean(DataSource.class);
Connection connection = dataSource.getConnection();
System.out.println(connection);