SPRing的邏輯層不是EJB等重量級組件,而是java Bean,因此正確配置Bean在Spring中就很重要。Spring中Bean的配置一共有以下方式:
第一類:通過Bean的ConstrUCtor創建Bean:
創建一個名為exampleBean,類型為examples.ExampleBean的Bean:
<bean id="exampleBean" class="examples.ExampleBean" />
相當于:
exampleBean = new examples.ExampleBean();
缺省的,創建的Bean都是Singleton,如果要每次創建新的Bean,設置:
<bean id="..." class="..." singleton="false" />
對于Singleton的Bean,Spring會跟蹤它,下次請求這個Bean時會直接返回Singleton實例。對于non-singleton的Bean,Spring不會跟蹤它,每次請求都會創建新的實例。
第二類:通過Factory創建Bean:
如果要通過static factory創建Bean,指定Factory Class和static factory method即可:
<bean id="exampleBean"
class="examples.ExampleBean2"
factory-method="create" />
相當于:
exampleBean = examples.ExampleBean2.create();
如果不是通過static factory而是工廠實例來創建,指定工廠實例和factory method即可,其中引用的factory-bean應該用<bean id="myFactoryBean" ... />配置好了:
<bean id="exampleBean"
factory-bean="myFactoryBean"
factory-method="create" />
相當于:
myFactoryBean = ...
exampleBean = myFactoryBean.create();
初始化Bean:
當創建了一個Bean后,立即可以初始化Bean,有兩種方式:通過一系列的setProperty(value)和指定Constructor或工廠方法的參數。Spring同時支持這兩種方式,但是設計者建議,除非是歷史遺留的Bean,推薦使用setProerty的方式初始化Bean。
假定Bean有一個setAge(int age)方法,可以這樣初始化Bean:
<bean id="exampleBean" ...>
<property name="age"><value>20</value></property>
</bean>
這是int,float等基本類型和String,Date的初始化方式,如果是一個對象引用,比如setStudent(Student std):
<bean id="exampleBean" ...>
<property name="student"><ref bean="studentBeanId" /></property>
</bean>
特別注意null引用不能用<value></value>,這會被識別為空字符串"",應該用<null/>:
<bean id="exampleBean" ...>
<property name="student"><null/></property>
</bean>
注:我也是看Spring的官方文檔邊看邊寫出來的,如有錯誤,還請大家指正!
(出處:http://www.49028c.com)
新聞熱點
疑難解答