【黑馬程序員】Java高頻面試系列:十二

5、 Spring 註解

Spring 在 2.5 版本以後開始支持用註解的方式來配置依賴注入。 可以用註解的方式來替代

XML 方式的 bean 描述, 可以將 bean 描述轉移到組件類的內部, 只需要在相關類上、 方法上

或者字段聲明上使用註解即可。 註解注入將會被容器在 XML 注入之前被處理, 所以後者會

覆蓋掉前者對於同一個屬性的處理結果。

註解裝配在 Spring 中是默認關閉的。所以需要在 Spring 文件中配置一下才能使用基於註解

的裝配模式。 如果你想要在你的應用程序中使用關於註解的方法的話, 請參考如下的配置。

<beans>

<annotation-config>

在 <annotation-config>標籤配置完成以後, 就可以用註解的方式在 Spring 中向屬性、

方法和構造方法中自動裝配變量。

幾種比較重要的註解類型:

@Required: 該註解應用於設值方法。

@Autowired: 該註解應用於有值設值方法、 非設值方法、 構造方法和變量。

@Qualifier: 該註解和@Autowired 註解搭配使用, 用於消除特定 bean 自動裝配的歧義。

JSR-250 Annotations : Spring 支 持 基 於 JSR-250 注 解 的 以 下 注 解 , @Resource 、

@PostConstruct 和 @PreDestroy。

6、 Spring 事務

Spring 支持兩種類型的事務管理:

1.編程式事務管理: 這意味你通過編程的方式管理事務, 給你帶來極大的靈活性, 但是難維

護。

2.聲明式事務管理: 這意味著你可以將業務代碼和事務管理分離, 你只需用註解和 XML 配置

來管理事務。

Spring 事務配置示例(使用 tx 標籤配置的攔截器)

<bean>

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property>

/<bean>

<advice>

<attributes>

<method>

<config>

<pointcut>

expression="execution(* com.bluesky.spring.dao.*.*(..))" />

<advisor>

pointcut-ref="interceptorPointCuts" />

SpringMVC 框架

9.2.1 SpringMVC 的執行流程

【黑馬程序員】Java高頻面試系列:十二

9.2.2 SpringMVC 執行流程描述:

1. 用戶向服務器發送請求, 請求被 sssSpringMVC 前端控制器 DispatcherServlet 捕獲;

2. DispatcherServlet 對請求 URL 進行解析,得到請求資源標識符(URI)。然後根據該 URI,調用 HandlerMapping

獲得該 Handler 配置的所有相關的對象(包括 Handler 對象以及 Handler 對象對應的攔截器) , 最後以

HandlerExecutionChain 對象的形式返回;

3. DispatcherServlet 根據獲得的 Handler, 選擇一個合適的 HandlerAdapter; (附註: 如果成功獲得

HandlerAdapter 後, 此時將開始執行攔截器的 preHandler 方法)

4. 提取 Request 中的模型數據, 填充 Handler 入參, 開始執行 Handler(Controller)。 在填充 Handler

的入參過程中, 根據你的配置, SpringMVC 將幫你做一些額外的工作:

HttpMessageConveter: 將請求消息(如 Json、 xml 等數據) 轉換成一個對象, 將對象轉換為指定的響應

信息。

數據轉換: 對請求消息進行數據轉換。 如 String 轉換成 Integer、 Double 等。

數據根式化: 對請求消息進行數據格式化。 如將字符串轉換成格式化數字或格式化日期等。

數據驗證: 驗證數據的有效性(長度、 格式等) , 驗證結果存儲到 BindingResult 或 Error 中。

5. Handler 執行完成後, 向 DispatcherServlet 返回一個 ModelAndView 對象;

6. 根據返回的 ModelAndView, 選擇一個適合的 ViewResolver(必須是已經註冊到 SpringMVC 容器中的

ViewResolver)返回給 DispatcherServlet;

7. ViewResolver 結合 Model 和 View, 來渲染視圖;

8. 將渲染結果返回給客戶端。

【黑馬程序員】Java高頻面試系列:十二

/<advisor>

/<pointcut>


分享到:


相關文章: