1. 程式人生 > >spring學習六

spring學習六

文件中 轉化 配方 strong ioc容器 private ping 切面 fault

1: @Valid 註解

    @NotNull(message="名字不能為空")

private String userName;

@Max(value=120,message="年齡最大不能查過120")

private int age;

@Email(message="郵箱格式錯誤")

private String email;

2: Spring MVC 處理靜態資源:

  所有以 /resource開頭的請求,都會自動由 /resources目錄提供目錄。 所有的圖片,樣式表,javaScript.

<mvc: resources mapping=“/resources/**” location=“/resources/” />

3: WEB容器在啟動時,它會為每個WEB應用程序都創建一個對應的ServletContext對象(每個web應用程序唯一),它代表當前web應用web容器提供其一個全局的上下文環境,其為後面的spring IoC容器提供宿主環境;

  讀取/WEB-INF/[servlet名字]-servlet.xml文件,初始化自己持有的上下文。初始化完畢後,spring也將dispatcherservlet的上下文存到ServletContext中。

  spring MVC 默認會從這個 servlet名字命名的XML中加載spring MVC的上下文。

4: DefaultAnnotationHandlerMapping: 將請求映射給使用 @RequestMapping註解的控制器和方法。

如果用 <mvc: annotation-driven>, 就可以不寫DefaultAnnotationHandlerMapping,這個標簽功能強大。

此外還有 SimpleUrlHandlerMapping(通過bean name進行URL映射) BeanNameUrlHandlerMapping

5: <context:componet-scan>

查找使用@Component註解的類並將其註冊為bean, @controller註解: 是@Component註解的一種具體化。
  <context:component-scan base-package=“XXXX.XXX.”
6:Spring框架好處

  • 輕量:Spring 是輕量的,基本的版本大約2MB。
  • 控制反轉:Spring通過控制反轉實現了松散耦合,對象們給出它們的依賴,而不是創建或查找依賴的對象們。
  • 面向切面的編程(AOP)Spring支持面向切面的編程,並且把應用業務邏輯和系統服務分開。
  • 容器:Spring 包含並管理應用中對象的生命周期和配置。
  • MVC框架:Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。
  • 事務管理:Spring 提供一個持續的事務管理接口,可以擴展到上至本地事務下至全局事務(JTA)。
  • 異常處理:Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO拋出的)轉化為一致的unchecked 異常

7: BeanFactory 實現舉例

Bean 工廠是工廠模式的一個實現,提供了控制反轉功能,用來把應用的配置和依賴從正真的應用代碼中分離。最常用的BeanFactory 實現是XmlBeanFactory 類。

最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根據XML文件中的定義加載beans。該容器從XML 文件讀取配置元數據並用它去創建一個完全配置的系統或應用。

8. 哪種依賴註入方式你建議使用,構造器註入,還是 Setter方法註入?

你兩種依賴方式都可以使用,構造器註入和Setter方法註入。

最好的解決方案是用構造器參數實現強制依賴,setter方法實現可選依賴。

9:如何定義bean的作用域

scope

10: Spring框架中的單例bean是線程安全的嗎?

  Spring框架中的單例bean不是線程安全的。

11: 什麽是Spring的內部bean?

  當一個bean僅被用作另一個bean的屬性時,它能被聲明為一個內部bean,為了定義inner bean,在Spring 的 基於XML的 配置元數據中,可以在 <property/>或 <constructor-arg/> 元素內使用<bean/> 元素,內部bean通常是匿名的,它們的Scope一般是prototype。

12: 在 Spring中如何註入一個java集合?

Spring提供以下幾種集合的配置元素:

  • <list>類型用於註入一列值,允許有相同的值。
  • <set> 類型用於註入一組值,不允許有相同的值。
  • <map> 類型用於註入一組鍵值對,鍵和值都可以為任意類型。
  • <props>類型用於註入一組鍵值對,鍵和值都只能為String類型。

13. 解釋不同方式的自動裝配

  有五種自動裝配的方式,可以用來指導Spring容器用自動裝配方式來進行依賴註入。

  • no:默認的方式是不進行自動裝配,通過顯式設置ref 屬性來進行裝配。
  • byName通過參數名 自動裝配,Spring容器在配置文件中發現bean的autowire屬性被設置成byname,之後容器試圖匹配、裝配和該bean的屬性具有相同名字的bean。
  • byType:通過參數類型自動裝配,Spring容器在配置文件中發現bean的autowire屬性被設置成byType,之後容器試圖匹配、裝配和該bean的屬性具有相同類型的bean。如果有多個bean符合條件,則拋出錯誤。
  • constructor:這個方式類似於byType, 但是要提供給構造器參數,如果沒有確定的帶參數的構造器參數類型,將會拋出異常。
  • autodetect首先嘗試使用constructor來自動裝配,如果無法工作,則使用byType方式。

14: Spring中可以註入null或空字符串

可以

15: 如何開啟註解裝配

<context:annotation-config/>

16:@Required 註解

這個註解表明bean的屬性必須在配置的時候設置,通過一個bean定義的顯式的屬性值或通過自動裝配,若@Required註解的bean屬性未被設置,容器將拋出BeanInitializationException。

17: @Autowired 註解

@Autowired 註解提供了更細粒度的控制,包括在何處以及如何完成自動裝配。它的用法和@Required一樣,修飾setter方法、構造器、屬性或者具有任意名稱和/或多個參數的PN方法。

18: @Qualifier 註解

  當有多個相同類型的bean卻只有一個需要自動裝配時,將@Qualifier 註解和@Autowire 註解結合使用以消除這種混淆,指定需要裝配的確切的bean。

19: DispatcherServlet

  Spring的MVC框架是圍繞DispatcherServlet來設計的,它用來處理所有的HTTP請求和響應。

20:@RequestMapping 註解

  該註解是用來映射一個URL到一個類或一個特定的方處理法上。

spring學習六