java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象
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对象了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象相关推荐
- Spring容器是什么?为什么要使用Spring容器?
相信大家在使用Springboot使用时候都会见过Spring容器,本文将基于Spring容器为大家做下详细讲解. [什么是Spring容器] 容器是什么?我们生活中处处可见容器,比如水杯.箱子等等. ...
- spring MVC中获取request和response
spring MVC中获取request和response: Java代码 HttpServletRequest request = ((ServletRequestAttributes) Req ...
- Spring MVC中获取当前项目的路径
Spring MVC中获取当前项目的路径 在web.xml中加入以下内容 <!--获取项目路径--><context-param><param-name>webAp ...
- Android多个imei如何获取,如何在Android 10中获取IMEI号,这是获取在Android 10及以下Android 10中获取IMEI号的代码...
如何在android 10中获取imei编号,这是获取在android 10及以下android 10中获取imei编号的代码. if (android.os.Build.VERSION.SDK_IN ...
- 用java写一个日历_使用JAVA写一个简单的日历
JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...
- 计算机毕业设计中用Java编写一个订餐系统(JAVA SWING)
一. 开发技术 JDK:JDK1.8,JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+J ...
- JAVA鸡汤------一个牛人给java初学者的建议
给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...
- java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫
Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...
- java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串
一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...
最新文章
- 算法 判断一个数是不是2的n次幂
- Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
- 目标检测领域还有什么可做的?19 个方向给你建议
- C语言十六进制数转八进制(十进制作为中介)(附完整源码)
- python内置函数分类_注意 Python 内置函数并不是万能的!
- 谈谈主策划需要的能力
- dlib实现人脸对齐方法
- 浩然战法--黄金柱选股
- 各种门平面图画法_关于CAD各种门怎么画平面图就行 CAD铝合金门窗
- 48种数据分析可视化图表
- armbian 安装python3
- 各类行业资源学习资料大全
- 如何在macOS中重置字体集
- 威漫哨兵机器人_漫威中实力最强的五大机器人,哨兵机器人能够团灭变种人!...
- 如何用手机上的计算机弹音乐,如何使用手机qq音乐遥控电脑播歌
- SCI论文投稿到接收的时间
- canopen6.0-PDO发送
- Prison Break中的经典台词
- UltraEdit高级教程
- 用javascript分类刷leetcode3.动态规划(图文视频讲解)