各种环境下获取容器内置对象的方法
2015-01-20 08:37
357 查看
没有加过任何支持的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对象了
相关文章推荐
- struts2获取jsp内置对象和ValueStack对象方法
- jquery获取对象的方法足以应付常见的各种类型的对象
- js 获取对象属性的各种方法
- spring非IOC容器中的对象获取IOC容器中对象的方法
- 获取Spring的Bean持有容器对象的方法
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
- js 获取对象属性的各种方法
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- jquery获取对象的方法足以应付常见的各种类型的对象
- VBA获取系统环境变量及特殊文件夹的各种代码与方法
- 关于在listener中获取spring容器中对象的方法
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
- ServletContextListener,各种获取servletContext对象的方法
- HTML5通过调用canvas对象的getContext()方法来获取绘图环境
- QTP的那些事--DOM的几种内置的获取对象方法
- 在各种不同的浏览器环境下获取xmlhttp对象
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
- 对Hibernate赖加载对象在session容器之外的获取方法
- jquery获取对象的方法足以应付常见的各种类型的对象
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】