javascript
《Spring3.0就这么简单》
第一章 認識Spring
1、Spring提供的IOC容器,是Spring大殺器之一。容器將對象之間的依賴關系交給Spring進行控制,采用配制的方式對依賴關系進行描述,由Ioc容器負責依賴類之間的創建、拼接、管理、獲取工作
2、Spring提供的第二大殺器,就是對AOP面向切面編程的支持。
3、Spring Data讓對數據的訪問更加容易。
第二章 IOC
1、通過BeanFactory啟動IOC容器的時候,并不會初始化配置文件中的Bean,初始化動作發生在第一個調用的時候。對于單例的Bean來說,BeanFactory會緩存該實例,第二次調用的時候直接從緩存中獲取該bean。
2、ContextApplication在初始化應用上下文的時候就實例化所有的單例bean,因此啟動時間會比BeanFactory長,但是沒有第一次調用懲罰問題。
3、WebApplication是專門為Web而準備的,從WebApplication可以獲得ServletContext的引用,ServletContext是web應用的上下文。WebApplication的初始化方式和上述兩種Factory有所不同,因為需要ServletContext實例,所以必須在擁有web容器的前提下才能完成啟動工作。
Spring提供了兩種方式用于初始化WebApplicationContext,ServletContext監聽器、自啟動Servlet。其中只有Servlet2.3以上版本的Web容器才支持ServletContext監聽器方式初始化WebApplicationContext。具體如何配置,帶后文補充。。。。。
4、容器、配置信息、應用實現之間的關系,個人認為這張圖很能說明問題
5、采用util命名空間配置集合類的bean;采用p命名空間簡化配置
6、Bean的作用域
第五章Hibernate
1、Hibernate4建議使用與線程綁定的原聲CurrentSession,不再使用HibernateTemplate。
2、延遲加載的問題。
Hibernate允許對關聯屬性、對象進行延遲加載,但是必須保證延遲加載的操作限于同一個額 Hibernate Session 范圍之內。如果Service層返回一個啟用了延遲加載功能的領域對象給Web層,當Web層訪問到那些需要延遲加載的數據的時候,由于加載領域對象的Hibernate Session已經關閉,將導致延遲加載數據的訪問異常。
Spring為此專門提供了一個OpenSessionViewFilter過濾器,主要供您能就是讓每個請求過程綁定一個HibernateSession,即使最初的事務已經完成了,也可以在Web層進行延遲加載的操作。
OpenSessionViewFilter過濾器將Hibernate Session綁定到請求線程中,它將自動被Spring的事務管理器探測到。所以OpenSessionViewFilter適用于Service層使用HibernateTransactionManger或者JtaTransactionManger進行事務管理的環境,也可以用于非只讀事務的數據操作中。
要啟用這個過濾器,必須在web.xml中進行配置:
??? <filter>
?????? <filter-name>openSessionInViewFilter</filter-name>
?????? <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
?????? <init-param> <param-name>singleSession</param-name>
?????? <param-value>true</param-value>
?????? </init-param>
??? </filter>
?????? <filter-mapping>
?????? <filter-name>openSessionInViewFilter</filter-name>
?????? <url-pattern>*.action</url-pattern>
?????? ?</filter-mapping>
補充一下,Spring針對Hibernate的非JPA實現用的是OpenSessionInViewFilter,如果采用Spring Data JPA,使用的是OpenEntityManagerInViewFilter
第7章SpringMVC
1、controller中,如果希望方法入參也添加到模型中,只需要在相應的入參前面使用@ModeAttribute
2、Spring MVC在調用方法前會創建一個隱含的模型對象,作為模型數據的存儲容器。如果處理方法的入參為Map或者Model類型(org.springframework.ui.Model,類似于Map,比Map更易用),SpringMVC會將隱含模型的應用傳遞給這些入參。于是開發者可以通過這個入參訪問到模型中的所有數據,也可以向模型中添加新的屬性數據。
3、Spring3.0有自己獨立的校驗框架,同時支持JSR303標準的校驗框架,但是本身并不提供JSR303的實現,可以包含HibernateValidatorJSR303的實現jar,供Spirng使用。如下:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>
LoacalValidateorFactoryBean實現了Spirng的Validator接口,同時也實現了JSR303的Validator接口。只要在Spring容器中定義一個LocalValidatorFactoryBean即可。與此同時,Spring提供的標簽<mvc:annotation-driven/>會默認裝配好一個LocalValidatorFactoryBean,不用我們再單獨聲明bean。
4、校驗結果的返回
srpingMVC會將實施校驗的結果保存在被校驗入參對象之后的BindingResult對象或者Errors對象中,同時這些校驗結果也會保存在隱含模型中,可以在JSP頁面中通過<form:errors path="*">或者<form:errors path="userName" cssClass="errorClass">來顯示校驗錯誤信息。
轉載于:https://www.cnblogs.com/mingziday/p/4747404.html
總結
以上是生活随笔為你收集整理的《Spring3.0就这么简单》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态规划--重拾我的“背包”
- 下一篇: 用户指南接口