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 的執行流程
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. 將渲染結果返回給客戶端。
閱讀更多 黑馬程序員成都中心 的文章