在spring的bean中获取ServletContext

news/2024/7/24 13:35:43
我的需求是获取spring开发的web项目在服务器上的绝对路径。
  进而引申到我需要知道servletContext,因为servletContext有一个servletContext.getRealPath("/");方法,这个方法就能获取项目的绝对路径。
  常规方式下我们如何获取servletContext呢?我们需要让我们的类继承HttpServlet类,然后获取servletConfig,通过这个获取servletContext(servletConfig.getServletContext())。(至于如何获取servletconfig对象,大家去google,百度找找吧)
  但是我需要在spring的bean中直接获取,这下可和我们常规的操作有些不同,因为spring的bean都是pojo的。根本见不着servletconfig和servletcontext的影子。
  这里我需要指出spring给我们提供了两个接口:org.springframework.web.context.ServletContextAware和
org.springframework.web.context.ServletConfigAware。我们可以让我们的bean实现上边的任何一个接口就能获取到servletContext了 .
代码如下:
这样,我们的bean就能够直接获取到servletContext了
如果你想要servletConfig,那方法一样,只是实现的接口不同了。
原理推想:应该是在创建spring的sessionFactory的时候,将应用服务器的相关属性一并加载,查看创建的bean是否实现相关接口,如果实现了,就将相关值赋予bean。
注意点:

  1、这东西是无法用junit进行单元测试的,因为他依赖于应用服务器

本文转自博客园沉睡森林@漂在北京的博客,原文链接:在spring的bean中获取ServletContext,如需转载请自行联系原博主。


http://www.niftyadmin.cn/n/1385495.html

相关文章

关于 logger

日志 前言 我是一名后台程序员,接触后台只有一年时间,在这期间一共做过四个项目,分别是: 工作室招新系统视频学习网站创客网站打印机项目由于之前做项目的时候没有好好重视日志,所以导致在开发与维护项目出现了很多问题…

重构——51移除设值函数(Remove Setting Method)

移除设值函数(Remove Setting Method) 类中的某个字段应该在对象创建时被设值,然后就不再改变;去掉该字段的所有设值函数 一、动机 不希望对象被改变,就不要提供设值函数,同时final之 二、做法 1、检查设值…

Virtualbox 复制vdi文件

2019独角兽企业重金招聘Python工程师标准>>> VirtualBox可不像VMware那样,直接复制虚拟磁盘文件就可以了事的,只因为VirtualBox识别虚拟磁盘文件VDI采用了uuid识别技术. 由于测试需要搭建局域网环境,需要两台虚拟机同时运行。当我…

springmvc初始化数据

在使用springmvc时,我们也会在项目启动时初始化一些数据,具体的方式见下面的链接。这里我只贴一下InitializingBean的例子。注意事项:springmvc和sping整合时,配置注解的注意事项!不注意会导致我们的controller实例或其他的实例在初始化时加载两次&#…

The type R is already defined 错误解决办法

今天在导入一个开源项目的时候遇到了The type R is already defined的错误,试过了删除R,clear project都还是报这个错,Google一下之后找到了解决办法在 Project->Properties->Builders,把Java-Builder的选择去掉&#xff0c…

apache下安装PHP

rpm -qa zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel 或者rpm -qa zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel如果没有可以使用yum来安装yum…

Java String.split()注意点

//String[] aa "aaa|bbb|ccc".split("|");//错误String[] aa "aaa|bbb|ccc".split("\\|"); //正确for (int i 0 ; i <aa.length ; i ) {System.out.println("--"aa[i]); } “.”和“|”都是转义字符,必须得加"\\…

RabbitMQ~一些术语和最消息的生产

学习一种技术需要先了解它,而想要学好一种技术,需要更多的了解它的组成,原理和实现机制! RabbitMQ安装介绍 RabbitMQ是由erlang语言开发的,所以必须先有安装erlang&#xff0c;类似java安装RabbitMQ是C/S模式的&#xff0c;所以安装rabbitMQ服务器&#xff0c;默认端口5672提供…