博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注入或获取spring上下文的几种方式
阅读量:6151 次
发布时间:2019-06-21

本文共 2462 字,大约阅读时间需要 8 分钟。

hot3.png

方式一:通过ApplicationContextAware 注入

package com.girltest.web.controller.common;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.context.annotation.Configuration;/*** * 暴露spring context给非spring容器的对象使用 * * @author pengsong */@Configurationpublic class SpringContext implements ApplicationContextAware {    protected static ApplicationContext context;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        context = applicationContext;    }    public static ApplicationContext getContext() {        return context;    }    public static 
T getBean(Class
beanClass) { return context.getBean(beanClass); } public static
T getBean(String name, Class
beanClass) { return context.getBean(name, beanClass); }}

注意:一定要给类SpringContext or @ Service

方式二:通过WebApplicationContextUtils

获取 HTTP request:

/*** * 获取http请求上下文 * @return */public static HttpServletRequest getRequest() {    ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();    if (null == servletRequestAttributes) {        return null;    }    HttpServletRequest request = servletRequestAttributes.getRequest();    return request;}
/*** * 获取spring MVC请求上下文 * @return */public static SpringMVCContext getSpringMVCContext() {    HttpServletRequest request = getRequest();    HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();    SpringMVCContext springMVCContext = new SpringMVCContext();    WebApplicationContext webApp = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());    springMVCContext.setRequest(request);    springMVCContext.setResponse(response);    springMVCContext.setWebApp(webApp);    return springMVCContext;}/*** * * @param request * @param beanName : 例如 userDao ,adminDao * @return */public static Object getBean(HttpServletRequest request, String beanName) {    WebApplicationContext webApp = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());    return webApp.getBean(beanName);}

注意:如果上述方法不是在web 请求链条中执行,则无法获取request.

转载于:https://my.oschina.net/huangweiindex/blog/2964259

你可能感兴趣的文章
[TC13761]Mutalisk
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>