Spring 学习笔记(三)

Spring 学习笔记二 提到了构造器注入的方式


构造方法注入:只能通过有参构造方法注入


字面值含有特殊字符:

字面值:用字符串表示 如value = "259" 可通过<value> 元素标签或value属性注入
如果字符串包含特殊字符,用 
<value><![CDATA[xxx]]></value>  例子:<![CDATA[shanghai~~]]>

<constructor-arg  type = "java.lang.String">
			<value><![CDATA[shanghai~~]]></value>
		</constructor-arg>
<constructor-arg  type = "java.lang.String">
			<value>shanghai</value>
		</constructor-arg>

Bean的相互引用:


Bean的相互引用,可用ref属性或<ref>元素来完成。

也可以再属性或构造器包含Bean的

在Bean里再声明Bean(内部Bean),如下图: 因为bean是内部bean,外部的其他bean是引用不到他的,所以不需要写id

<bean ....>
	<property name = "Audi">
		<bean class = "car"> <!-- 不能被外部引用,不需要写id-->
			<property xxx = "...">
			<property xxx = "...">
			<property xxx = "...">
		</bean>
	</property>
</bean>




Spring支持级联属性配置


person有个属性是car对象


前提是car对象创建了,才能直接对car.price 属性 赋值。 跟structs2不同。

<bean id ...>
	<property name = "car.price"  value = "..."><property> 为级联属性赋值
</bean>




<?xml version="1.0" encoding="UTF-8"?>
<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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

	<!-- 
	<bean id = "test" class="com.harry.spring.learning.User">
		<property name="username" value="huanghong"></property>
		<property name="password" value="harrysir"></property>
	</bean>
 -->
 	<!-- 使用构造器注入属性值,可指定参数的位置和类型以区分重载的构造器 -->
	<bean id="car" class="com.harry.spring.learning.Car">
		<constructor-arg value="Audi" index="0"></constructor-arg>
		<constructor-arg value="300000" type="int"></constructor-arg>
		<constructor-arg  type = "java.lang.String">
			<value><![CDATA[shanghai~~]]></value>
		</constructor-arg>
	</bean>
	
	<bean id="person" class="com.harry.spring.learning.Person">
		<property name="name" value = "Harry"></property>
		<property name="age" value="20"></property>
		 
		<property name="car">
			<bean class="com.harry.spring.learning.Car">
				<constructor-arg value = "Ford"></constructor-arg>
				<constructor-arg value = "250000"></constructor-arg>
				<constructor-arg value = "shenzhen "></constructor-arg>
			</bean>
		</property>
		 <!--如果上面的car对象注释掉了,下面这行执行就会报错,Spring不会自动创建 -->
		 <property name="car.maxSpeed" value="200"></property> <!-- 级联属性  类对象的属性-->
		
	</bean>
	
	
</beans>


前提是car对象创建了,跟structs2不同。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值