博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 从spring容器中获取注入的bean对象
阅读量:6240 次
发布时间:2019-06-22

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

 

java 从spring容器中获取注入的bean对象

CreateTime--2018年6月1日10点22分

Author:Marydon

1.使用场景

  控制层调用业务层时,控制层需要拿到业务层在spring容器中注入的对象

2.代码实现

import org.apache.struts2.ServletActionContext;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;
/** * 从spring容器中获取注入的bean对象 * @explain 必须获取到ServletContext对象,Controller层以struts2为例 * @author Marydon * @creationTime 2018年6月1日上午10:06:49 * @version 1.0 * @since * @email marydon20170307@163.com */public final class BeansUtils {    private static final Logger logger = LoggerFactory.getLogger(BeansUtils.class);    private static ApplicationContext ctx;    private static WebApplicationContext webCtx;    // 静态代码块:加载该类时会被运行的代码    static {        if (ctx == null) {            try {                // 入参需要拿到ServletContext对象                webCtx = WebApplicationContextUtils                        .getRequiredWebApplicationContext(ServletActionContext.getServletContext());                logger.info("从web.xml容器中加载spring-config.xml");            } catch (Exception e) {                logger.info("直接加载spring-config.xml");            }            if (webCtx == null)                // 你可以自定义spring配置文件的文件名                ctx = new ClassPathXmlApplicationContext("spring-config.xml");        }    }    /**     * 通过beanID获取bean实例     *      * @param beanID     *            bean的代码     * @return 返回对应的实例     * @throws RuntimeException     *             bean没有定义     */    public static Object getBeanInstance(String beanID) throws RuntimeException {        logger.info("在spring容器中获取Bean对象 ID=" + beanID);        Object obj;        if (BeansUtils.ctx == null) {            if (BeansUtils.webCtx.containsBeanDefinition(beanID)) {                obj = BeansUtils.webCtx.getBean(beanID);            } else {                logger.info("beanID=" + beanID + "没有定义");                throw new RuntimeException(beanID + "没有定义!");            }        } else {            if (BeansUtils.ctx.containsBeanDefinition(beanID)) {                obj = BeansUtils.ctx.getBean(beanID);            } else {                logger.info("beanID=" + beanID + "没有定义");                throw new RuntimeException(beanID + "没有定义!");            }        }        return obj;    }}

 

 相关推荐:

 

 

转载地址:http://qrsia.baihongyu.com/

你可能感兴趣的文章
linux 查找目录下的文件内容并替换(批量)
查看>>
iphone遮住听筒/感应器/摄像头黑屏的解决办法
查看>>
python 抓取alexa数据
查看>>
UART、SPI和I2C详解
查看>>
兼容N多浏览器的CSS阴影效果
查看>>
Multiple arguments in Django template filters
查看>>
ARM11-Linux2.6-Button-Driver-Base-info
查看>>
抽屉Panel的研究
查看>>
In-App Purchase
查看>>
深圳it公司
查看>>
glog 使用中存在的问题
查看>>
WCF, the Service attribute value in the ServiceHost directive could not be found.
查看>>
Scriptcase价格调整(五折销售)
查看>>
【转】 编写C#调用的C++DLL
查看>>
Programming Concepts
查看>>
【Linux】用grep在文档中查找内容
查看>>
音视频编码格式和封装格式的关系和区别是什么?
查看>>
ORACLE 表空间使用率查询
查看>>
cadence制作封装要素
查看>>
Web实时通信
查看>>