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,將調用方法
spring的一些配置和重要的接口和類