多端点RequestMapping引发LazyInitializationException问题排查求助
已知原/settings/**路径API正常,新增/v2/settings/**路径后出现懒加载异常,核心原因是v2路径的请求生命周期中,Hibernate Session提前关闭,导致后续访问懒加载集合时无法初始化代理,具体排查方向:
Open Session in View(OSIV)过滤器未覆盖v2路径
多数Spring项目依赖OSIV过滤器延长Session生命周期到视图渲染阶段。检查web.xml或Spring配置中OSIV过滤器的url-pattern,如果仅配置了/settings/*,未包含/v2/settings/*,那么v2路径的请求在控制器方法执行完成后Session就会被关闭,后续序列化响应时访问懒加载集合就会触发异常。Spring Security过滤器链未正确包含v2路径
即使你配置了相同的intercept-url权限规则,若项目中存在多套过滤器链配置(比如通过<s:http>标签的pattern属性区分路径),v2路径可能未被纳入维持Session的过滤器链中,导致请求处理完成后Session提前销毁。事务切面或AOP逻辑未覆盖v2路径
检查项目中的事务注解(@Transactional)或AOP切面的切入点表达式,若仅对/settings/**路径的方法生效,v2路径对应的控制器方法调用Service时可能没有开启事务,Service方法执行完后Session立即关闭,控制器中访问懒加载集合就会失败。序列化配置未适配v2路径
若使用Jackson等序列化框架,可能针对/settings/**路径配置了懒加载集合的特殊处理(比如通过Hibernate5Module模块支持懒加载序列化),但v2路径未触发该配置,导致序列化时尝试访问未初始化的懒加载集合,触发异常。
内容的提问来源于stack exchange,提问作者John Doe

