3、通过类型获取bean
4、给bean的属性赋值
1) 依赖注入的方式:通过bean的setXxx()方法赋值
Hello World中使用的就是这种方式,注意属性名称,实际是通过set方法,所以属性名称在SET方法中首字母要大写。
2). 通过bean的构造器赋值:Spring自动匹配合适的构造器
-1)通过bean的构造器赋值
<bean id="book" class="com.atguigu.spring.bean.Book" >
<constructor-arg value= "10010"/>
<constructor-arg value= "Book01"/>
<constructor-arg value= "Author01"/>
<constructor-arg value= "20.2"/>
</bean >
-2)通过索引值指定参数位置
<bean id="book" class="com.atguigu.spring.bean.Book" >
<constructor-arg value= "10010" index ="0"/>
<constructor-arg value= "Book01" index ="1"/>
<constructor-arg value= "Author01" index ="2"/>
<constructor-arg value= "20.2" index ="3"/>
</bean >
-3)通过类型不同区分重载的构造器
<bean id="book" class="com.atguigu.spring.bean.Book" >
<constructor-arg value= "10010" index ="0" type="java.lang.Integer" />
<constructor-arg value= "Book01" index ="1" type="java.lang.String" />
<constructor-arg value= "Author01" index ="2" type="java.lang.String" />
<constructor-arg value= "20.2" index ="3" type="java.lang.Double" />
</bean >
3)、p名称空间
为了简化XML文件的配置,越来越多的XML文件采用属性而非子元素配置信息。Spring 从2.5版本开始引入了一个新的p命名空间,可以通过<bean>元素属性的方式配置Bean 的属性。使用p命名空间后,基于XML的配置方式将进一步简化。
<bean id="studentSuper" class="com.atguigu.helloworld.bean.Student" p:studentId="2002" p:stuName="Jerry2016" p:age="18" />
5、可以使用的值
1) 字面量
1) 可以使用字符串表示的值,可以通过value属性或value子节点的方式指定
2) 基本数据类型及其封装类、String等类型都可以采取字面值注入的方式
3) 若字面值中包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来
2)null值
<bean class="com.atguigu.spring.bean.Book" id="bookNull" > <property name= "bookId" value ="2000"/> <property name= "bookName"> <null/> </property> <property name= "author" value ="nullAuthor"/> <property name= "price" value ="50"/> </bean >
3)给bean的级联属性赋值
<bean id="action" class="com.atguigu.spring.ref.Action"> <property name="service" ref="service"/> <!-- 设置级联属性(了解) --> <property name="service.dao.dataSource" value="DBCP"/> </bean>
4)外部已声明的bean、引用其他的bean
<bean id="s5" class="com.atguigu.spring.di.Student"> <property name="id" value="10055"></property> <property name="name" value="张三三"></property> <property name="age" value="23"></property> <property name="sex" value="男"></property> <property name="teacher" ref="teacher"></property> //引用外部的bean teacher <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>
5)内部bean
当bean实例仅仅给一个特定的属性使用时,可以将其声明为内部bean。内部bean声明直接包含在<property>或<constructor-arg>元素里。内部bean不能使用在任何其他地方
<bean id="s6" class="com.atguigu.spring.di.Student"> <property name="id" value="10066"></property> <property name="name" value="崔八"></property> <property name="age" value="18"></property> <property name="sex" value="男"></property> <property name="teacher"> <bean id="tt" class="com.atguigu.spring.di.Teacher"> <property name="tid" value="2222"></property> <property name="tname" value="admin"></property> </bean> </property> </bean>
6、集合属性
在Spring中可以通过一组内置的XML标签来配置集合属性,例如:<list>,<set>或<map>。
1)数组和List
配置java.util.List类型的属性,需要指定<list>标签,在标签里包含一些元素。这些标签 可以通过<value>指定简单的常量值,通过<ref>指定对其他Bean的引用。通过<bean>指定内置bean定义。通过<null/>指定空元素。甚至可以内嵌其他集合。
数组的定义和List一样,都使用<list>元素。
配置java.util.Set需要使用<set>标签,定义的方法与List一样。
<bean id="t1" class="com.atguigu.spring.di.Teacher"> <property name="tid" value="10001"></property> <property name="tname" value="佟刚"></property> <property name="cls"> <list> <value>A</value> <value>B</value> <value>C</value> </list> </property> </bean> <bean id="t2" class="com.atguigu.spring.di.Teacher"> <property name="tid" value="10002"></property> <property name="tname" value="婷姐"></property> <property name="students"> <list> <ref bean="s1"/> <ref bean="s2"/> <ref bean="s3"/> </list> </property> </bean>
2) Map
Java.util.Map通过<map>标签定义,<map>标签里可以使用多个<entry>作为子标签。每个条目包含一个键和一个值。
必须在<key>标签里定义键。
因为键和值的类型没有限制,所以可以自由地为它们指定<value>、<ref>、<bean>或<null/>元素。
可以将Map的键和值作为<entry>的属性定义:简单常量使用key和value来定义;bean引用通过key-ref和value-ref属性定义。
<bean id="t3" class="com.atguigu.spring.di.Teacher"> <property name="tid" value="10003"></property> <property name="tname" value="admin"></property> <property name="bossMap"> <map> <entry> <key> <value>10001</value> </key> <value>佟老师</value> </entry> <entry> <key> <value>10002</value> </key> <value>陈老师</value> </entry> </map> </property> </bean>
3)集合类型的bean
如果只能将集合对象配置在某个bean内部,则这个集合的配置将不能重用。我们需要 将集合bean的配置拿到外面,供其他bean引用。
配置集合类型的bean需要引入util名称空间
<bean id="t4" class="com.atguigu.spring.di.Teacher"> <property name="tid" value="10004"></property> <property name="tname" value="root"></property> <property name="students" ref="students"></property> </bean> <util:list id="students"> <ref bean="s4"/> <ref bean="s5"/> <ref bean="s6"/> </util:list> <util:map id="map"> <entry> <key> <value>1</value> </key> <value>张三</value> </entry> </util:map>
原文:https://www.cnblogs.com/lemonzhang/p/12904381.html