Spring与Web整合实例

发布时间 - 2026-01-11 02:29:59    点击率:

一 概述

1.整合目的

将所有对象的创建与管理任务交给Spring容器,降低程序的耦合度。

2.整合途径

将Spring容器注入到Web容器中。

3.具体实现

使用ServletContextListener监听ServletContext,当ServletContexxt创建时同时创建Spring容器,并将创建完成的容器放到ServletContext即application中,在Web中获取Spring容器,就可以访问对象了。ContextLoadListener是ServletContextListener的一个实现类,配置:

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

默认情况下,Spring的配置文件只能放在WEB-INF目录下,名称为applicationContext.xml,可以在web.xml文件中修改,将配置文件放在src目录下:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:xxxx.xml</param-value>
</context>

4.获取Spring容器

WebApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());

二 延时加载问题

1.原因

视图层调用Service的方法从数据库中加载对象,如果Dao实现层采用了延时加载,返回一个包含null对象的代理,在视图层访问对象的详情时,Service层已经执行完毕,事务已关闭,对象为空,就无法获取对象的详情。

2.解决方法

将Session与请求线程绑定,允许在事务关闭以后完成延时加载任务。

3.具体实现

在web.xml中配置:

<filter>
  <filter-name>openSessionInViewFilter</filter-name>
  <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>opernSessionInViewFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

以上这篇Spring与Web整合实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# Spring与Web整合  # 加载  # 放在  # 给大家  # 配置文件  # 目录下  # 希望能  # 采用了  # 并将  # 这篇  # 解决方法  # 数据库中  # 绑定  # 小编  # 大家多多  # 就可以  # 为空  # 情况下  # listener  # gt  # org 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Swift中循环语句中的转移语句 break 和 continue  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  如何用好域名打造高点击率的自主建站?  Python高阶函数应用_函数作为参数说明【指导】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  网站制作免费,什么网站能看正片电影?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  简单实现jsp分页  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  EditPlus中的正则表达式 实战(4)  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何在腾讯云服务器快速搭建个人网站?  Laravel storage目录权限问题_Laravel文件写入权限设置  黑客入侵网站服务器的常见手法有哪些?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何用景安虚拟主机手机版绑定域名建站?  微信小程序 require机制详解及实例代码  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  高端企业智能建站程序:SEO优化与响应式模板定制开发  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何快速搭建虚拟主机网站?新手必看指南  Android使用GridView实现日历的简单功能  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  linux top下的 minerd 木马清除方法  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何使用Sanctum进行API认证?(SPA实战)  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何在Windows环境下新建FTP站点并设置权限?  专业商城网站制作公司有哪些,pi商城官网是哪个?  郑州企业网站制作公司,郑州招聘网站有哪些?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何快速搭建个人网站并优化SEO?  Swift中switch语句区间和元组模式匹配  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何用低价快速搭建高质量网站?  如何快速建站并高效导出源代码?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel如何处理和验证JSON类型的数据库字段  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  如何快速生成凡客建站的专业级图册?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)