Spring核心篇章:html
Spring 5 中文解析核心篇-IoC容器之依賴關係git
Spring 5 中文解析核心篇-IoC容器之Bean做用域spring
Spring 5 中文解析核心篇-IoC容器之自定義Bean性質數據庫
Spring 5 中文解析核心篇-IoC容器之BeanDefinition繼承與容器拓展點編程
Spring 5 中文解析核心篇-IoC容器之基於註解的容器配置微信
Spring 5 中文解析核心篇-IoC容器之類路徑掃描和組件管理session
Spring 5 中文解析核心篇-IoC容器之JSR330標準註解框架
Spring 5 中文解析核心篇-IoC容器之基於Java容器配置分佈式
Spring 5 中文解析核心篇-IoC容器之Environment抽象
Spring 5 中文解析核心篇-IoC容器之ApplicationContext與BeanFactory
Spring 5 中文解析核心篇-IoC容器之Resources
Spring 5 中文解析核心篇-IoC容器之數據校驗、數據綁定和類型轉換
Spring 5 中文解析核心篇-IoC容器之SpEL表達式
Spring 5 中文解析核心篇-IoC容器之AOP編程(上)")
Spring 5 中文解析核心篇-IoC容器之AOP編程(下)")
Spring 5 中文解析核心篇-IoC容器之Spring AOP API
Spring測試篇章:
Spring 5 中文解析核心篇-集成測試之概要和集成測試註解
Spring 5 中文解析核心篇-集成測試之TestContext(上)")
Spring 5 中文解析核心篇-集成測試之TestContext(中)")
Spring 5 中文解析測試篇-集成測試之TestContext(下)")
Spring 5 中文解析測試篇-Spring MVC測試框架
Spring 5 中文解析測試篇-WebTestClient
Spring存儲篇章:
Spring 5 中文解析數據存儲篇-Spring框架的事物支持模型的優點
[Spring 5 中文解析數據存儲篇-事務同步和聲明式事物管理
](https://mp.weixin.qq.com/s?__...
[Spring 5 中文解析數據存儲篇-@Transactional使用
](https://mp.weixin.qq.com/s?__...
完整電子書地址
Spring對數據訪問對象(DAO)的支持旨在使以一致的方式輕鬆使用數據訪問技術(例如JDBC
、Hibernate
或JPA
)。這使你能夠輕鬆地在上述持久性技術之間進行切換,而且還使你無需擔憂捕獲每種技術特有的異常便可進行編碼。
Spring提供了從特定於技術的異常(例如SQLException
)到其本身的異常類層次結構的便捷轉換,該異常類層次結構以DataAccessException
做爲根異常。這些異常包裝了原始異常,所以你永遠不會丟失任何有關可能出錯的信息。
除了JDBC
異常,Spring還能夠包裝JPA
和Hibernate
特定的異常,將它們轉換爲一組集中的運行時異常。這樣,你就能夠僅在適當的層中處理大多數不可恢復的持久性異常,而沒必要在DAO中使用煩人的樣板捕獲和拋出塊以及異常聲明。(儘管如此,你仍然能夠在任何須要的地方捕獲和處理異常。)如上所述,JDBC
異常(包括特定於數據庫的方言)也被轉換爲相同的層次結構,這意味着你能夠在一致的編程模型中使用JDBC
執行某些操做。
在Spring對各類ORM框架的支持中,上述討論對於各類模板類均適用。若是使用基於攔截器的類,應用程序必須關心處理HibernateExceptions
和PersistenceExceptions
自己,最好是經過分別委託給SessionFactoryUtils
的convertHibernateAccessException(..)
或convertJpaAccessException()
方法。這些方法將異常轉換爲與org.springframework.dao
異常層次結構中的異常兼容的異常。因爲未選中PersistenceException
,所以它們也可能被拋出(不過,在異常方面犧牲了通用的DAO抽象)。
下圖顯示了Spring提供的異常層次結構。(請注意,圖像中詳細說明的類層次結構僅顯示整個DataAccessException
層次結構的子集。)
確保你的數據訪問對象(DAO)或存儲庫提供異常轉換的最佳方法是使用@Repository
註解。此註解還使組件掃描支持能夠查找和配置DAO和存儲庫,而沒必要爲其提供XML配置。如下示例顯示瞭如何使用@Repository
註解:
@Repository //1 public class SomeMovieFinder implements MovieFinder { // ... }
任何DAO或存儲庫實現都須要訪問持久性資源,具體取決於所使用的持久性技術。例如,基於JDBC
的存儲庫須要訪問JDBC
數據源,而基於JPA
的存儲庫須要訪問EntityManager
。完成此操做的最簡單方法是使用@Autowired
、@Inject
、@Resource
或@PersistenceContext
註解之一注入此資源依賴項。如下示例適用於JPA
存儲庫:
@Repository public class JpaMovieFinder implements MovieFinder { @PersistenceContext private EntityManager entityManager; // ... }
若是使用經典的Hibernate
API,則能夠注入SessionFactory
,如如下示例所示:
@Repository public class HibernateMovieFinder implements MovieFinder { private SessionFactory sessionFactory; @Autowired public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } // ... }
咱們在此顯示的最後一個示例是對典型JDBC
支持的。你能夠將DataSource
注入初始化方法或構造函數中,在此方法中,你可使用此DataSource
建立JdbcTemplate
和其餘數據訪問支持類(例如SimpleJdbcCall
等)。如下示例自動裝配數據源:
@Repository public class JdbcMovieFinder implements MovieFinder { private JdbcTemplate jdbcTemplate; @Autowired public void init(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } // ... }
有關如何配置應用程序上下文以利用這些註解的詳細信息,請參見每種持久性技術的特定介紹。
我的從事金融行業,就任過易極付、思建科技、某網約車平臺等重慶一流技術團隊,目前就任於某銀行負責統一支付系統建設。自身對金融行業有強烈的愛好。同時也實踐大數據、數據存儲、自動化集成和部署、分佈式微服務、響應式編程、人工智能等領域。同時也熱衷於技術分享創立公衆號和博客站點對知識體系進行分享。關注公衆號: 青年IT男 獲取最新技術文章推送!
博客地址: http://youngitman.tech
CSDN: https://blog.csdn.net/liyong1...
微信公衆號:
技術交流羣: