spring優勢spring
方便解耦,簡化開發編程
Spring就是一個大工廠,能夠將全部對象建立和依賴關係維護,交給Spring管理session
AOP編程的支持框架
Spring提供面向切面編程,能夠方便的實現對程序進行權限攔截、運行監控等功能post
聲明式事務的支持測試
只須要經過配置就能夠完成對事務的管理,而無需手動編程prototype
方便程序的測試對象
Spring對Junit4支持,能夠經過註解方便的測試Spring程序生命週期
方便集成各類優秀框架事務
Spring不排斥各類優秀的開源框架,其內部提供了對各類優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
下降JavaEE API的使用難度
Spring 對JavaEE開發中很是難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大下降
<bean>的做用範圍:scope屬性:
Spring建立Bean的時候默認狀況下使用單例模式建立:
scope:
* singleton :默認值.默認就會採用單例模式建立Bean.
* prototype :Spring建立Bean的時候採用多例模式.
* request :Web項目中使用.Spring建立Bean的時候,將Bean保存到request域中.
* session :Web項目中使用.Spring建立Bean的時候,將Bean保存到session域中.
* globalsession :Web項目中使用.通常用於Porlet應用環境.若是沒有Porlet環境.配置了globalsession等同於session.
Spring生成Bean的時候有一個完整的生命週期:(11個步驟:)
1.instantiate bean對象實例化
2.populate properties 封裝屬性
3.若是Bean實現BeanNameAware 執行 setBeanName
4.若是Bean實現BeanFactoryAware 或者 ApplicationContextAware 設置工廠 setBeanFactory 或者上下文對象 setApplicationContext
5.若是存在類實現 BeanPostProcessor(後處理Bean) ,執行postProcessBeforeInitialization
6.若是Bean實現InitializingBean 執行 afterPropertiesSet
7.調用<bean init-method="init"> 指定初始化方法 init
8.若是存在類實現 BeanPostProcessor(處理Bean) ,執行postProcessAfterInitialization
9.執行業務處理
10.若是Bean實現 DisposableBean 執行 destroy
11.調用<bean destroy-method="customerDestroy"> 指定銷燬方法 customerDestroy