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对象相关推荐

  1. Spring容器是什么?为什么要使用Spring容器?

    相信大家在使用Springboot使用时候都会见过Spring容器,本文将基于Spring容器为大家做下详细讲解. [什么是Spring容器] 容器是什么?我们生活中处处可见容器,比如水杯.箱子等等. ...

  2. spring MVC中获取request和response

    spring MVC中获取request和response: Java代码   HttpServletRequest request = ((ServletRequestAttributes) Req ...

  3. Spring MVC中获取当前项目的路径

    Spring MVC中获取当前项目的路径 在web.xml中加入以下内容 <!--获取项目路径--><context-param><param-name>webAp ...

  4. 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 ...

  5. 用java写一个日历_使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  6. 计算机毕业设计中用Java编写一个订餐系统(JAVA SWING)

    一. 开发技术 JDK:JDK1.8,JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+J ...

  7. JAVA鸡汤------一个牛人给java初学者的建议

    给初学者之一:浅谈java及应用 学java不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理 虽说不上此道高手,大概也算有点斤两了吧 每次上网,泡bbs逛论坛,没少去java ...

  8. java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫

    Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...

  9. java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串

    一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...

最新文章

  1. 算法 判断一个数是不是2的n次幂
  2. Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
  3. 目标检测领域还有什么可做的?19 个方向给你建议
  4. C语言十六进制数转八进制(十进制作为中介)(附完整源码)
  5. python内置函数分类_注意 Python 内置函数并不是万能的!
  6. 谈谈主策划需要的能力
  7. dlib实现人脸对齐方法
  8. 浩然战法--黄金柱选股
  9. 各种门平面图画法_关于CAD各种门怎么画平面图就行 CAD铝合金门窗
  10. 48种数据分析可视化图表
  11. armbian 安装python3
  12. 各类行业资源学习资料大全
  13. 如何在macOS中重置字体集
  14. 威漫哨兵机器人_漫威中实力最强的五大机器人,哨兵机器人能够团灭变种人!...
  15. 如何用手机上的计算机弹音乐,如何使用手机qq音乐遥控电脑播歌
  16. SCI论文投稿到接收的时间
  17. canopen6.0-PDO发送
  18. Prison Break中的经典台词
  19. UltraEdit高级教程
  20. 用javascript分类刷leetcode3.动态规划(图文视频讲解)

热门文章

  1. foundation 数组NSArray学习
  2. 朗沃20140414
  3. HDU2010 水仙花数【进制】
  4. 太原理工大学荣获2020(第二届)集成电路EDA设计精英挑战赛一等奖
  5. Bailian2790 迷宫【DFS】
  6. NUC1776 Tiling Up Blocks【二维最长上升子序列+DP】
  7. E: Could not get lock /var/lib/dpkg/lock(无法获得锁)
  8. Python 标准库 —— queue、heapq与PriorityQueue
  9. 强悍的命令 —— cp
  10. 极简代码(五)—— 斐波那契数列