java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象

本文详细介绍了在Java中如何从Spring容器中获取已注入的Bean对象,主要涉及了通过`WebApplicationContextUtils`和`ClassPathXmlApplicationContext`两种方式来获取,适用于控制层调用业务层的场景。
摘要由CSDN通过智能技术生成

Java 如何实现从spring容器中获取注入的bean对象

发布时间:2020-11-03 15:27:37

来源:亿速云

阅读:70

作者:Leah

这期内容当中小编将会给大家带来有关Java 如何实现从spring容器中获取注入的bean对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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;

}

}

上述就是小编为大家分享的Java 如何实现从spring容器中获取注入的bean对象了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值