Spring入門學習(Bean的引用) 第二節
阿新 • • 發佈:2019-01-06
Spring學習 第二節
Bean的引用
使用property
的ref
屬性建立bean之間的引用關係
- 建立一個
Person.java
類,包含一個Car
屬性:package com.fafa.spring.beans; public class Person { private String name; private int
- 建立一個
person
的Bean:
使用property
ref
引用了一個上節建立的id為car2
的Bean,注入Person
類中的Car
屬性中<bean id="person" class="com.fafa.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property 的 ref 屬性建立bean之間的引用關係 --> <!-- <property name="car" ref="car2"></property> --> <property name="car"> <ref bean="car2"/> </property> </bean>
- 建立一個
PerosnTest.java
測試類public class PersonTest { ApplicationContext ctx; @Before public void init(){ ctx = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml"); } @Test public void testPerson01(){ Person person = (Person) ctx.getBean("person"); System.out.println(person); } }
- 測試結果,可以看出名為
perosn
的Bean已經成功注入到了Car屬性中。
另一種方式是建立一個部的Bean使用
- 建立一個內部的
bean
如下:<bean id="person" class="com.fafa.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property 的 ref 屬性建立bean之間的引用關係 --> <!-- <property name="car" ref="car2"></property> --> <!-- <property name="car"> <ref bean="car2"/> </property> --> <!-- 內部bean,不能被外部引用,只能在內部使用 --> <property name="car"> <bean id="car3" class="com.fafa.spring.beans.Car"> <constructor-arg value="Ford"/> <constructor-arg value="Changan"/> <constructor-arg value="200000" type="double"/> </bean> </property> </bean>
- 此時得到測試結果如下:
注意內部建立的Bean無法被外部引用,它只能在內部使用。
為Bean的引用的屬性賦值
- 建立一個
person2
的Bean,如下:<bean id="person2" class="com.fafa.spring.beans.Person"> <constructor-arg value="Jerry"></constructor-arg> <constructor-arg value="25"></constructor-arg> <constructor-arg ref="car2"></constructor-arg> <!-- 為級聯屬性賦值 .注意:屬性需要先初始化後才可以為級聯屬性賦值,否則會有異常,和Struts2不同--> <property name="car.price" value="310000"></property> </bean>
Person
類中的Car
屬性引用了之前建立的id為car2
的Bean,使用<property name="car.price" value="310000"></property>
的方式為car的級聯屬性賦值(此時容器已經在初始化時建立了car2的Bean)。 - 測試結果如下:
@Test public void testPerson02(){ Person person = (Person) ctx.getBean("person2"); System.out.println(person); }
3.測試賦值 null<null/>
專有標記
結果如下:<bean id="person2" class="com.fafa.spring.beans.Person"> <constructor-arg value="Jerry"></constructor-arg> <constructor-arg value="25"></constructor-arg> <!-- 測試賦值 null <null/>專有標記--> <constructor-arg><null/></constructor-arg> </bean>
小結
本次主要學習瞭如何引用建立的Bean(使用`ref`)以及對初始化後的屬性進行級聯屬性賦值,使用`<null/>`專有標記將屬性的值設為null