获取spring的ApplicationContext的5种方式

Java类获取spring 容器的bean

 

常用的5种获取spring 中bean的方式总结:

 

方法一:在初始化时保存ApplicationContext对象

代码:

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");

ac.getBean("beanId");

说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。

 

方法二:通过Spring提供的工具类获取ApplicationContext对象

代码:

import org.springframework.web.context.support.WebApplicationContextUtils;

ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);

ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);

ac1.getBean("beanId");

ac2.getBean("beanId");

说明:

这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。

 

上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。

 

方法三:继承自抽象类ApplicationObjectSupport

说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。

Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。

 

方法四:继承自抽象类WebApplicationObjectSupport

说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext

 

方法五:实现接口ApplicationContextAware

说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。

Spring初始化时,会通过该方法将ApplicationContext对象注入。

 

 

虽然,spring提供了后三种方法可以实现在普通的类中继承或实现相应的类或接口来获取spring 的ApplicationContext对象,但是在使用是一定要注意实现了这些类或接口的普通java类一定要在Spring 的配置文件application-context.xml文件中进行配置。否则获取的ApplicationContext对象将为null。

 

 

如下是我实现了ApplicationContextAware接口的例子

 

package quartz.util;

 

import org.springframework.beans.BeansException;

import org.springframework.context.ApplicationContext;

import org.springframework.context.ApplicationContextAware;

 

public class SpringConfigTool implements ApplicationContextAware{//extends ApplicationObjectSupport{

 

private static ApplicationContext context = null;

private static SpringConfigTool stools = null;

public synchronized static SpringConfigTool init(){

  if(stools == null){

   stools = new SpringConfigTool();

  }

  return stools;

}

 

public void setApplicationContext(ApplicationContext applicationContext)

throws BeansException {

  context = applicationContext;

}

 

public synchronized static Object getBean(String beanName) {

  return context.getBean(beanName);

}

 

}

 

 

 

XML文件中的配置信息

 

 

最后提供一种不依赖于servlet,不需要注入的方式

注意一点,在服务器启动时,Spring容器初始化时,不能通过以下方法获取Spring 容器,如需细节可以观看源码org.springframework.web.context.ContextLoader

 

Title1 import org.springframework.web.context.ContextLoader; 

import org.springframework.web.context.WebApplicationContext; 

 

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 

  wac.getBean(beanID); 

微信小程序 - 实现仿小红书轮播图组件功能,类似小红书笔记页面图片展示播放效果,微信小程序仿小红书幻灯片轮播支持视频播放、图片预览,自动适应图片或视频大小可左右滑动切换(小程序精美轮播图,丝滑切换) 微信小程序,轮播图组件,微信小程序仿小红书轮播图,小红书轮播图仿造,微信小程序轮播图,微信小程序幻灯片,微信小程序高仿小红书轮播图实现,小程序实现类似小红书一样的轮播图组件,轮播图插件,精致轮播图,精美丝滑流畅切换的轮播图,轮播图组件,小红薯轮播图,关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现,微信小程序仿小红书图片轮播,开发微信小程序模仿小红书,高仿小红书Banner的指示器,小红书小程序笔记详情轮播图指示点的随图片数量的变化动态变化,微信小程序swiper轮播图,js轮播图,html 阅读详情

相关推荐

手把手教你用CANape调试XCP安全会话:DLL权限管理+四种加密模式实战演示

本文详细介绍了如何使用CANape调试XCP安全会话,重点解析了DLL权限管理的实现与配置方法,并通过实战演示了标定页切换、DAQ测量、STIM旁路和PGM刷写四种典型加密模式的操作流程与调试技巧,帮助工程师深入理解并掌握XCP安全访问机制。

smartcontract5的博客 562

Spring中获取某一类型下所有Bean实例的方法

void run();System . out . println("我是man,快跑!");System . out . println("我是women,慢跑!");} }System . out . println("使用交通工具。。。");} }System . out . println("开车!");System . out . println("骑自行车!");} }

Mrzhuangr的博客 3427

用MCP扩展Cursor的5种神奇用法:从文件操作到网页抓取实战

本文深入探讨了如何利用MCP(Model Context Protocol)扩展Cursor AI编程助手,解锁五种高效实用场景。从文件系统操作、网页内容抓取,到数据库查询、Figma设计稿对接,乃至构建自定义MCP服务器,文章通过实战案例展示了如何将Cursor从代码编辑器升级为能理解并操作工作环境的智能助手,显著提升开发效率与自动化水平。

weixin_29231027的博客 315

普通的java类获取spring 的bean配置

这个问题困扰了我2天终于找到原因了,原来是少了在xml文件中的配置。   如下是在网上找到的5中获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");ac.getBe...

java-cn 281

Zephyr、FreeRTOS 和 RT-Thread

你是…更适合用嵌入式新手,刚接触 RTOSFreeRTOS(入门简单)IoT 项目开发,需要 BLE/WiFi/MQTTZephyr(协议全)想快速构建可部署的产品Zephyr(模块统一)只做单个任务或简单状态机控制FreeRTOS(轻量)做平台化、持续集成、自动测试Zephyr(CI 支持强)

is0815的博客 2243

Dify-前端本地运行-单点登录

本文介绍了如何在已部署Dify的系统中实现AI应用跳转及页面定制化改造。通过iframe跳转无法满足甲方需求后,作者对Dify前端源码进行了本地化二次开发,主要步骤包括:1) 按照官方文档搭建本地开发环境;2) 修改.env配置文件连接部署好的后端服务;3) 隐藏侧边栏和头部导航栏;4) 实现单点登录功能,通过URL参数获取用户邮箱自动登录。过程中解决了请求拦截导致的登录校验问题,最终达成仅保留对话框界面并同步用户信息的需求。该方案涉及Next.js框架和React技术的应用,为类似定制化需求提供了参

weixin_43163457的博客 3224

spring获取类的方法

1:(通过FileSystemXmlApplicationContext) 通过程序在初始化的时候,导入Bean配置文件applicationContext.xml ApplicationContext   ctx=new   FileSystemXmlApplicationConte( "classpath:applicationContext.xml"); BaseDAO   base...

lijilin12的博客 637

LoRa物联网实战:用新大陆模块打造智能LED呼吸灯(附完整代码解析)

本文详细介绍了如何利用新大陆LoRa模块实现工业级智能LED呼吸灯的设计与开发。通过256级PWM调制的呼吸灯效果,结合LoRa无线控制技术,实现设备状态的可视化反馈和多设备同步控制。文章包含完整的硬件选型、电路设计、算法优化和代码实现,特别适合物联网开发者和硬件工程师参考。

github5actions的博客 85

SpringBoot 五种获取ApplicationContext的方式

之前每次想要获取Spring上下文【ApplicationContext】的时候,都去现查方案。本文针对获取Spring ApplicationContext的方式做了梳理,总结。 1. 概念 ApplicationContext是什么? 简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能 2. 获取ApplicationContext的方式 2.1. 创建工具类 通过此工具类,可以方便的获取bean组件, 获取配置信息等 import

penriver的博客 2万+

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1985

Python全栈入门到实战【进阶篇 2】面向对象之封装:私有属性、私有方法与@property优雅访问

_属性名真正私有方法:双下划线开头(__方法名()),Python自动名字改写,外部无法访问;约定私有方法:单下划线开头(_方法名()),仅为编程约定,外部可访问但不推荐。实战中优先使用“真正私有方法”,隐藏核心辅助逻辑。封装的本质:隐藏对象的核心数据(私有属性)和内部逻辑(私有方法),仅对外提供规范、安全的访问接口,实现数据安全与可维护性;私有属性真正私有:双下划线开头(__属性名),Python名字改写,外部无法直接访问,仅类内部可用;约定私有:单下划线开头(_属性名。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 2915

Spring——五大类注解和方法注解详解

spirng五大类注解和方法注解详解以及常见面试题

Biteht的博客 3177

【Claude】Extra inputs are not permitted 错误:代理剥离 Beta 标头的解决方案 bug报错已解决

深入分析Claude Code Extra inputs are not permitted 400错误的技术原理,解析代理剥离Beta标头的根因与多种修复方案。

一键难忘的博客 145

Spring4 + Junit4 实现测试中ApplicationContext的获取

用Junit测试Spring 获取ApplicationContext 总的来说有两种方式: 1. 硬编码获取ApplicationContext, 其中还包括3中方式 String configLocation="applicationContext.xml";     context1 = new ClassPathXmlApplicationContext(configLocatio

colourrain的专栏 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring获取ApplicationContext的几种方法

Spring获取ApplicationContext的几种方法1.ApplicationContext简介2.获取方法2.1 通过Spring提供的工具类WebApplicationContextUtils获取2.2 初始化时保存ApplicationContext对象2.3 继承自抽象类ApplicationObjectSupport2.4 继承自抽象类WebApplicationObjectS...

weixin_43611145的博客 1353

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Spring】普通类获取Spring容器的bean的方法

我们通常在项目中获取Spring容器里bean的方式,一般是使用注解的方式(@Autowired、@Resource)直接注入就可以直接使用了,那么如果在一个普通的类里(别人使用它的实例是以new的方式使用的),此时再用注解的方式注入的将会是null,那这种情况下,我们该如何使用Spring容器里的bean呢?本篇博客讲解五种方法,接下来就依次详细讲一下使用方式

像风走过八千里 3580

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring如何管理Java普通类(Java类获取Spring容器的bean)

Spring如何管理Java普通类 Java类获取Spring容器的bean 获取spring的ApplicationContext

snow_114的专栏 4518

【Spring5】002-入门案例

Spring5入门案例

qq_39413850的博客 325

java spring 容器_Java类获取spring 容器的bean

常用的5种获取spring 中bean的方式总结:方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");ac.getBean("beanId");说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过...

weixin_33428613的博客 114

Spring Bean生命周期总结

1、简要说明 1)本文基于spring5.1.7版本,采用ApplicationContext获取bean对象。 2)BeanFactory和ApplicationContext对于bean后置处理器还有所不同,需要注意,ApplicationContext会自动检测在配置文件中实现了BeanPostProcessor接口的所有bean,并把它们注册为后置处理器,然后在容器创建bean的适当时候调......

欢迎来到【战羽】的博客 4770

java获取spring bean_Java类获取spring 容器的bean

Java类获取spring容器的bean经常使用的5种获取spring中bean的方式总结:方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");ac.getBean("beanId");说明:这种方式适用于采用S...

weixin_40006265的博客 150

`@DynamicPropertySource` 是 Spring Framework 5.2.5(及 Spring Boot 2.2.6)中引入的一个重要测试增强注解

| **加载时机** | ✅ 在 `ApplicationContext` **刷新前**(`prepareTestInstance` 阶段)加载,但**早于 `@DynamicPropertySource`**;属性以静态方式解析(如读取 classpath 文件或内联 `properties` 字符串)。 | ✅ **更早且更底层**:在 `SpringBootTestContextBootstrapper` 的 `getMergedContextConfiguration()` 后、`ContextL

[Blog][Domain] programb.blog.youkuaiyun.com 430

获取Spring的ApplicationContext几种方式

获取Spring的ApplicationContext几种方式 获取Spring中的Bean方式常用的有五种,如下所示。 方法1:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 注意:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。

qq_40093255的博客 6063

spring 初始化ApplicationContext的几种方式

方法一:FileSystemXmlApplicationContext //1.默认为项目工作路径 即项目的根目录 ApplicationContext appCt2 = new FileSystemXmlApplicationContext("src/main/resources/app.spring.xml"); appCt2.getBean("beanId");//2.前缀clas

DoubleLiu 9401

获取spring的ApplicationContext几种方式

常用的5种获取spring 中bean的方式总结:方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext(“applicationContext.xml”); ac.getBean(“beanId”); 说明:这种方式适用于采用Spring框架的独立应用程序

yj的博客 502

获取Spring的ApplicationContext的几种方式

Application Context定义 简单来说就是Spring中的高级容器,可以获取容器中的各种bean组件,注册监听事件,加载资源文件等功能。 具体定义可以参考官网:https://spring.io/understanding/application-context Understanding Application Context TheApplicationContextis the central interface within a Spring application for ...

Java技术栈,分享最主流的Java技术 879
上一篇: MySQL日期时间函数大全(转)
下一篇: JVM内存参数详解以及配置调优
cwfmaker
博客等级 码龄18年 6粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值