1. 程式人生 > >spring的一些配置和重要的接口和類

spring的一些配置和重要的接口和類

裝配 ioc 調用 el表達式 屬性 rop 實例對象 代理 調用方法

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的一些配置和重要的接口和類