各种环境下获取容器内置对象的方法
来源:互联网 发布:自学软件测试 编辑:程序博客网 时间:2024/06/16 00:27
没有加过任何支持的web项目或者普通项目,或者加过这些支持,但是并未用到,例如没有经过struts的配置文件访问,没有
经过servlet访问,没有spring bean过等等,即都是没有这些对应的容器支持,那么像request,session,application这些
对象都是拿不到的!
(我的是从spring的容器里拿application对象)那么今天看了许多文章,既然直接拿不到application对象,那么就用间接的方法
只能手动从spring容器中手动拿到,然后再赋值给自己定义的application对象
像下面这样:
大家都说实现接口ApplicationContextAware
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。
但是实际操作中遇到了问题,配置了这个类,也加了SpringBean的配置,但是启动的时候,Spring没有帮我注入这个对象,这个问题我自己想了一下,觉得是因为这是一个普通类,
而不是一个spring 管理的bean ,所以它并没有直接有spring容器管理,那么这个类是没有spring环境的,所以直接是获取不到application对象的,我是这么想的,
不知道对不对,希望给大家仅供参考,以后证实了再来改正。
PS:问题解决,参考http://kewen1989.iteye.com/blog/1891124于是我就用了这样一个方法实现:
还是实现了这样一个接口:
Java代码 收藏代码
public class ApplicationContextHelper implements ApplicationContextAware
{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext contex) throws BeansException
{
ApplicationContextHelper.context = contex;
}
public static ApplicationContext getContext()
{
return context;
}
}
由于我前面遇到的问题是,spring启动的时候没有帮我注入这个ApplicationContext的对象,那么我就自己给它设进去,于是就在Spring启动的监听后面,自己加了一个监听
Java代码 收藏代码
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.kewen.util.GetContext</listener-class>
</listener>
监听类实现如下:
Java代码 收藏代码
public class GetContext implements ServletContextListener
{
private static WebApplicationContext webApplicationContext;
private static ApplicationContextHelper helper = new ApplicationContextHelper();
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
}
@Override
public void contextInitialized(ServletContextEvent arg0)
{
webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext());
helper.setApplicationContext(webApplicationContext);
}
这样我们就可以在别的地方调用ApplicationContextHelper的getContext()方法,而不需要直接经过容器来获取到需要的ApplicationContext对象了
经过servlet访问,没有spring bean过等等,即都是没有这些对应的容器支持,那么像request,session,application这些
对象都是拿不到的!
(我的是从spring的容器里拿application对象)那么今天看了许多文章,既然直接拿不到application对象,那么就用间接的方法
只能手动从spring容器中手动拿到,然后再赋值给自己定义的application对象
像下面这样:
大家都说实现接口ApplicationContextAware
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。
但是实际操作中遇到了问题,配置了这个类,也加了SpringBean的配置,但是启动的时候,Spring没有帮我注入这个对象,这个问题我自己想了一下,觉得是因为这是一个普通类,
而不是一个spring 管理的bean ,所以它并没有直接有spring容器管理,那么这个类是没有spring环境的,所以直接是获取不到application对象的,我是这么想的,
不知道对不对,希望给大家仅供参考,以后证实了再来改正。
PS:问题解决,参考http://kewen1989.iteye.com/blog/1891124于是我就用了这样一个方法实现:
还是实现了这样一个接口:
Java代码 收藏代码
public class ApplicationContextHelper implements ApplicationContextAware
{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext contex) throws BeansException
{
ApplicationContextHelper.context = contex;
}
public static ApplicationContext getContext()
{
return context;
}
}
由于我前面遇到的问题是,spring启动的时候没有帮我注入这个ApplicationContext的对象,那么我就自己给它设进去,于是就在Spring启动的监听后面,自己加了一个监听
Java代码 收藏代码
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.kewen.util.GetContext</listener-class>
</listener>
监听类实现如下:
Java代码 收藏代码
public class GetContext implements ServletContextListener
{
private static WebApplicationContext webApplicationContext;
private static ApplicationContextHelper helper = new ApplicationContextHelper();
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
}
@Override
public void contextInitialized(ServletContextEvent arg0)
{
webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext());
helper.setApplicationContext(webApplicationContext);
}
这样我们就可以在别的地方调用ApplicationContextHelper的getContext()方法,而不需要直接经过容器来获取到需要的ApplicationContext对象了
0 0
- 各种环境下获取容器内置对象的方法
- 在各种不同的浏览器环境下获取xmlhttp对象
- ServletContextListener,各种获取servletContext对象的方法
- 获取Spring的Bean持有容器对象的方法
- spring非IOC容器中的对象获取IOC容器中对象的方法
- 使用EL内置对象获取JSP内置对象的数据
- window对象的内置方法
- javaScrfipt在各种浏览器中获取对象的方法
- Spring - web环境下获取IOC容器
- 各种浏览器下的页面元素xpath获取方法
- 各种浏览器下的页面元素xpath获取方法
- struts2获取jsp内置对象和ValueStack对象方法
- 获取spring容器的方法
- 获取父容器的方法
- 获取Spring容器的方法
- 各种web容器数字证书的配置方法
- c++ STL的各种容器方法总结
- 各种环境下的编码
- vs2008上进行托管代码与X64非托管代码调试问题
- 开始捡起编程项目
- new出来的service对象和你在spring中注入的service对象不是同一个对象
- linux 字符驱动设备 驱动代码 测试代码 makefile文件
- Struts2 Action与Servlet API耦合
- 各种环境下获取容器内置对象的方法
- BZOJ 1202 HNOI2005 狡猾的商人 并查集
- C++11与Unicode及使用标准库进行UTF-8、UTF-16、UCS2、UCS4/UTF-32编码转换
- 2014支付宝JAVA笔试题面试分享
- <context:component-scan>的用法
- 在服务器启动时servlet中获取spring 的bean对象
- Android开发环境搭建小记
- 无线网络连接不上怎么回事,应该如何解决?
- git fork