1.依赖注入
- 属性注入:即通过setter方法注入
<property name="name" value="Spring"></property>
- 构造方法注入
<bean id="car" class="com.springtest.Car" >
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="300" index="2"></constructor-arg>
</bean>
<bean id="car2" class="com.springtest.Car" >
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="200" type="int"/>
</bean>
构造方法注入中index属性可以对构造方法中的参数不按照默认顺序赋值(默认与构造方法中参数声明顺序一致)。type属性可以对一些参数个数相同但是参数类型不同的构造函数进行区分调用。
2.字面值
字面值:可用字符串表示的值,可以通过<value>元素标签或value属性进行注入
基本数据类型及其封装类,String等类型都可以采取字面值注入的方式。
若字面值中包含特殊字符,可以使用<![CDATA[值]]>把字面值包裹起来
例如:要输出<value>^需要使用<![CDATA[<value>^]]>
3.Bean之间互相引用
- <property name="car" ref="car2"></property>
- <property name="car">
<ref bean="car"/>
</property>
- 内部Bean
<property name="car">
<bean class="com.springtest.Car" >
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="2000" type="int"/>
</bean>
</property>
同时强调级联属性赋值:需要先初始化
<property name="car" ref="car2"></property>
<property name="car.brand" value="falali"></property>
4.list标签
<!-- 测试集合 -->
<bean id="person" class="com.springtest.Person">
<property name="name" value="ljc"></property>
<property name="age" value="21"></property>
<property name="cars">
<list >
<ref bean="car"/>
<ref bean="car2"/>
<bean class="com.springtest.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="2000" type="int"/>
</bean>
</list>
</property>
</bean>
cars是一个集合对象,通过list来引用已经声明的car和car2,还创建了一个内部bean来初始化cars集合。
5.map标签
<!-- map -->
<bean id="newperson" class="com.springtest.Person2">
<property name="name" value="ljc"></property>
<property name="age" value="21"></property>
<property name="cars">
<map>
<entry key="AA" value-ref="car"></entry>
<entry key="BB" value-ref="car2"></entry>
</map>
</property>
</bean>
主要通过实现map标签和entry子标签来实现对cars集合类型的赋值。
6.property标签
<!-- property -->
<bean id="dataSource" class="com.springtest.DataSource">
<property name="properties">
<props>
<prop key="user">admin</prop>
<prop key="password">123456789</prop>
<prop key="q">dqwf</prop>
<prop key="qwd">qwfd</prop>
</props>
</property>
</bean>
7.util标签
前面提到过的list的标签,如果想多次使用相同的一个list集合,我们不必每次都去重复写,只需要通过在外部声明一个util:list就可以达到我们的需求。
<util:list id="cars">
<ref bean="car"/>
<ref bean="car2"/>
</util:list>
util需要现在namespace中选中:
接下来就可以的重复使用这个list集合了。
<bean id="person2" class="com.springtest.Person">
<property name="name" value="zmh"></property>
<property name="age" value="21"></property>
<property name="cars" ref="cars"></property>
</bean>
8.p标签
同样需要先在nampspace中选中。
我们可以直接通过p属性进行赋值,这样还是极为方便的。
<bean id="person3" class="com.springtest.Person" p:name="zmlj" p:age="20" p:cars-ref="cars">
</bean>