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...
微信公众号:
技术交流群: