Spring Boot中spring.jpa.open-in-view=true属性解析
技术背景
在Spring Boot应用里进行JPA配置时,spring.jpa.open-in-view
是一个关键属性。它与Open Session in View(OSIV)模式相关,该模式会影响应用对数据库会话的管理,特别是在处理延迟加载的实体关联时。
实现步骤
1. 默认值
若未明确提供该属性,Spring Boot里 spring.jpa.open-in-view
的默认值为 true
。这意味着默认启用了OSIV模式。
2. 开启 spring.jpa.open-in-view=true
时的工作原理
- 过滤器启动会话:
OpenSessionInViewFilter
调用底层SessionFactory
的openSession
方法获取新的会话,然后将会话绑定到TransactionSynchronizationManager
。 - 请求处理:
OpenSessionInViewFilter
调用javax.servlet.FilterChain
对象引用的doFilter
方法,继续处理请求。DispatcherServlet
接收HTTP请求并路由到对应的控制器。 - 服务层操作:控制器调用服务层