spring的一些配置和重要的介面和類
spring的配置檔案
通常是applicationContext.xml(具體的bean配置會在後面內容中詳解)
setter方法注入:
<property name=“” value=“jake”>
或者<property name=“”>
<value>xxx</value>
集合注入:
集合的注入都是給<property>新增子標籤
例子:陣列:
<array>
<value>zzz</value>
<value>zzz</value>
<value>zzz</value>
</array>
map:
<map>
<entry key=“” value="">
</map>
property:
<property name="">
<props>
<prop key="xx"> </prop>
</props>
</property>
spring的基本使用(第一個特徵ioc控制反轉):
//獲取一個spring容器介面的例項:(用此方法獲取的bean是實時bean)
ApplicationContext applicationContent= new classpathxmlapplicationcontent(xml);
//根據一個id獲得一個bean容器
U u= (U)applicationContent.getBean("id號");
spring的另一個重要特徵di:依賴注入
依賴:一個物件需要使用另一個物件
注入:通過setter方法進行另一個物件例項設定
<property>用於進行屬性注入
name:bean的屬性名,通過setter方法獲得
ref:另一個bean的id值的引用
幾個重要的介面和類:
beanFactory(懶載入):這是一個工廠,用於生產任意bean 載入xml執行位置--》web-inf/class/xml
application是beanFactory的子介面功能更強大(當配置檔案被載入,就進行物件的例項化,這就是bean的自動裝配,不是懶載入)
(國際化處理,事件傳遞,bean自動裝配,各種不同應用層的context實現)
想要使用延時載入的話 則使用BeanFactory介面
BeanFactory benaFactory= new XmlBeanFactory(new ClassPathResource(xmlpath));
裝配bean的三種例項化方式
3種bean例項化方式:預設構造,靜態工廠,例項工廠
靜態工廠:
常用與spring整合其他框架(工具)
它用於生產例項物件,所有的方法必須是static
<bean id=“” class="工廠全限定類名" factory-method=“靜態工廠中的方法”>
例項工廠:
與靜態工廠不一樣的是bean工廠不需要是static
<bean id=“” class="工廠全限定類名" factory-method="??” factory-bean=“??”>
factory-bean 確定工廠例項
factory-method 確定普通方法
spring的生命週期
1.初始化和銷燬:
目標方法執行前執行後,將進行初始化或銷燬
<bean id="" class="" init-method="" destory-method="">
init-method 用於配置初始化方法,準備資料
destory-method銷燬方法必須是單例的
bean介面.close()方法來銷燬例項
2.beanpostprocessor後處理
spring提供一種機制,只要實現此介面beanpostPostprocessor,並將實現類提供給Spring容器,spring容器將自動在初始化(init方法)前before(),後執行after()。
3.postprocessbeforeinit/afterinit處理
spring提供工廠鉤子,用於修改例項物件,可以生成代理物件,是aop底層。將a的例項物件傳遞給後處理,可以生成代理物件並返回(postprocessbeforeinit。。。)
在init後方法中生成代理,因為在前方法中不會執行init方法(除非你在介面中聲名全了實現類中的方法)
可以在init後面加代理,這也是spring可以事務管理的原因
spel表示式
對property進行統一程式設計:
<property name=“” value=“”>
#{benaID}:另一個bean的引用
#{beanId.property}:操作資料
#{beanId.property}通過另一個bena來獲得屬性,呼叫方法
#{beanId.property?.toUpperCase()}如果物件不為null,將呼叫方法