SpringContextHolder使用报错及@Lazy使用

【解决方案】使用transformer指定显卡后,模型依然加载到默认第1张显卡上 按理说指定了环境变量为后面几张显卡,模型会自动加载到我们指定的显卡上。可是查看gpu使用情况,发现还是加载在了第一张显卡上,这是为啥呢? 阅读详情
  • 今天在使用SpringContextHolder来获取一个bean的时候出现错误,报错如下:
java.lang.IllegalStateException: applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.
	at org.apache.commons.lang3.Validate.validState(Validate.java:826)
	at com.jituan.common.util.SpringContextHolder.assertContextInjected(SpringContextHolder.java:79)
	at com.jituan.common.util.SpringContextHolder.getBean(SpringContextHolder.java:41)
	at com.jituan.common.message.util.sms.SmsUtil.querySmsTemplate(SmsUtil.java:206)
	at com.jituan.common.message.util.sms.SmsUtil.send(SmsUtil.java:76)
	at com.jituan.common.message.processer.SmsProcesser.send(SmsProcesser.java:37)
	at com.jituan.batch.msghandler.MessageHandler.smsSend(MessageHandler.java:106)
	at com.jituan.batch.msghandler.MessageHandler$SmsTread.run(MessageHandler.java:185)
  • 解决方案:
  1. 在spring-mvc.xml中加入配置后解决(主动注入springContextHolder):
<!-- 全局变量以便可以获得对应的注入bean -->
	<bean id="springContextHolder" class="com.jituan.common.util.SpringContextHolder" />
  1. 在SpringContextHolder类上加入注解@Service、@Lazy(false)
  • SpringContextHolder 具体实现
import java.util.Map;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
 
/**
 *
 *以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
 * @author Bucky
 */
@Service
@Lazy(false)
public class SpringContextHolder implements ApplicationContextAware{
 
    private static ApplicationContext applicationContext;
 
     
    //实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextHolder.applicationContext = applicationContext;
    }
 
    
    //取得存储在静态变量中的ApplicationContext.
    public static ApplicationContext getApplicationContext() {
        checkApplicationContext();
        return applicationContext;
    }
     
    //从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) {
        checkApplicationContext();
        return (T) applicationContext.getBean(name);
    }
 
     
    //从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
    //如果有多个Bean符合Class, 取出第一个.
    @SuppressWarnings("unchecked")
    public static <T> T getBean(Class<T> clazz) {
        checkApplicationContext();
        @SuppressWarnings("rawtypes")
                Map beanMaps = applicationContext.getBeansOfType(clazz);
        if (beanMaps!=null && !beanMaps.isEmpty()) {
            return (T) beanMaps.values().iterator().next();
        } else{
            return null;
        }
    }
 
    private static void checkApplicationContext() {
        if (applicationContext == null) {
            throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");
        }
    }
 
}
  • @Lazy注解用于指定该Bean是否取消预初始化。主要用于修饰Spring Bean类,用于指定该Bean的预初始化行为lazy代表延时加载。
    1.lazy=false,代表不延时,如果对象A中还有对象B的引用,会在A的xml映射文件中配置b的对象引用,多对一或一对多,不延时代表查询出对象A的时候,会把B对象也查询出来放到A对象的引用中,A对象中的B对象是有值的。
    2.lazy=true代表延时,查询A对象时,不会把B对象也查询出来,只会在用到A对象中B对象时才会去查询,默认好像是false,你可以看看后台的sql语句的变化就明白了,一般需要优化效率的时候会用到。
Windows下通过Ollama安装使用DeepSeek本地大模型 本地安装运行Deepseek大模型 阅读详情

相关推荐

用Multisim仿真石英晶体振荡电路:从等效模型到频响曲线实战

本文通过Multisim软件,从构建石英晶体等效电路模型入手,详细演示了如何仿真分析其电抗频率特性曲线,并实战搭建与调试皮尔斯振荡电路。文章深入探讨了振荡必须工作在串联与并联谐振点之间感性区的原因,为电子设计者提供了从理论到仿真的完整可视化学习路径。

ik67890123的博客 502

SpringContextHolder使用报错:applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder...

SpringContextHolder代码如下:没有问题 ** * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext. */ @Service @Lazy(false) public class SpringContextHolder implements ApplicationConte...

zuixiaoyao_001的博客 1万+

射频指纹识别技术:原理、应用与深度学习实现

射频指纹识别(RFFI)是一种基于硬件特征的设备身份认证技术,通过分析无线设备发射信号中的独特硬件特征实现设备识别。其核心原理源于发射器硬件电路的非线性特性,如功率放大器的相位噪声和混频器的非线性失真,这些特征具有难以伪造的特点。在物联网和边缘计算场景中,RFFI技术展现出独特优势,尤其在智能家居和工业物联网中,能有效防止非法接入和设备伪造。深度学习方法的引入进一步提升了RFFI的性能,通过自动特征提取和端到端优化,显著提高了识别准确率。本文详细探讨了RFFI的技术原理、应用场景及实现方法,为相关领域的研究

weixin_30457465的博客 890

applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.

我用的jeesite框架,在使用定时任务时,出现一些问题,,1.在windows上项目可以在tomcat下,运行2.在linux下项目在tomcatgh下,却出现问题: 15-Dec-2017 15:15:37.552 INFO [www.toolcoo.com-startStop-1] org.apache.catalina.core.ApplicationContext.log I...

weixin_30906185的博客 1万+

Unity+Hybridclr发布WebGL记录

问题不多,比预想中的顺利,如果遇到问题建议先看Hybridclr的常见问题里面有没有解决方案,没遇到Hybridclr的报错,所以记录的问题里面没有Hybridclr相关的。导出设置里的压缩格式选择了Brotli,而服务器或浏览器不支持,据说是可以拓展服务器配置使支持Brotli,但是由于我本人是IIS小白,所以换了种压缩格式,在publishing Settings修改Compression Fromat为Gzip。3.在浏览器运行之后视图一直闪烁。,修改配置,这个网上很常见。

a598211757的博客 1038

AutoSAR配置视频讲解:简介

AutoSAR实验视频讲解:闪烁一颗LED实验【简介】 大家好,欢迎来到雪云飞星的《AutoSAR实验课的视频讲解》专栏。看过《AutoSAR入门到精通系列讲解》的朋友们应该对博主不陌生,有很多朋友加了博主的微信成为了好友,还有朋友约过线下见面,博主很高兴大家能从我的博客中获得一些收获。在专栏里博主挖了很多坑,当时也说过想要录制一个AutoSAR的配置视频教程,素材在20年初就已经录好,中间各种原因足足鸽了一年。当时因为一些技术原因只能通过博客的图文形式展示出来,现在我们剪辑了视频,请了专业的配音,希望以视

雪云飞星的博客 9654

java context.xml_applicaitonContext属性未注入,请在applicationContext.xml中定义SpringContextHolder....

【官方正版】android核心编程与实战79.2元包邮(需用券)去购买 >我用的jeesite框架,在使用定时任务时,出现一些问题,,1.在windows上项目可以在tomcat下,运行2.在linux下项目在tomcatgh下,却出现问题:15-Dec-2017 15:15:37.552 INFO [www.toolcoo.com-startStop-1] org.apache.catal...

weixin_35198152的博客 1916

华为OD机考双机位C卷 - 朋友圈个数(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 朋友圈个数(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 695

SpringContextHolder使用报错

今天在使用SpringContextHolder来获取一个bean的时候出现错误,报错如下: java.lang.IllegalStateException: applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder. at org.apache.common...

dobecoder的博客 2920

嵌入式通信协议框架的四层架构设计与实现

本文详细介绍一种模块化的嵌入式通信协议框架设计,采用四层架构:硬件抽象层统一管理数据收发与缓冲,隔离硬件差异;协议管理层通过特征识别自动路由多协议数据,支持动态扩展;协议处理层独立实现各协议解析/构建,确保校验安全与零拷贝效率;应用层采用表驱动模式处理业务逻辑,与协议细节解耦。 该架构已应用于工业控制等领域,具备强类型安全、高扩展性和平台无关性特点,显著提升复通信场景下的开发效率与系统可靠性。提供完整代码实现与设计要点分析,助力开发者构建高效通信栈。

Bit_Dong的博客 2464

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026

YOLO系列算法改进 | C2PSA改进篇 | 融合FSD频域结构解耦模块 | 双域解耦感知,兼顾全局亮度与局部纹理,适应红外小目标与边缘部署场景 | ICME 2026 (以YOLO26最新目标检测模型为基础,利用C2PSA_FSD创新模块进行改进)

2502_91881744的博客 316

SpringContextHolder工具类

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34415923的博客 1万+

解决微信小程序长页面滚动到底部点击底部的输入框后输入框漂浮且页面滚动到顶部

一、问题描述 项目中有一个长页面上部展示部分信息下部为信息录入,页面长度为三屏幕(不同手机屏幕大小略有差异),当滚动到第二屏或者第三屏去填写信息时点击输入框后输入框漂浮起来了并且页面向上滚动了一段距离,回到了第一屏中展示的内容。效果如图。 滚动到第二屏,证件号输入。 点击输入框 可以看到证件号输入框漂浮了起来并且页面滚动到了第一屏展示的内容。 注意:小程序是2018年上线,在2020年4月份之前该页面从未出现过这种现象。推测:微信的后续更新中对微信小程序基础库进行了重构,导致点击输入框后页

仰望星空的代码 3260

java中的holder类,SpringContextHolder工具类

1.工具类用途?该工具类主要用于那些没有归入spring框架管理的类却要调用spring容器中的bean提供的工具类,在spring中要通过IOC依赖注入来取得对应的对象,但是该类通过实现ApplicationContextAware接口,以静态变量保存Spring ApplicationContext,可在任何代码任何地方任何时候中取出ApplicaitonContext.如此就不能说说org...

weixin_35214885的博客 2645

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

61.安心技术梳理 - SpringContextHolder 获取不到applicationContext

web.xml <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name&g...

majunzhu的博客 1130

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringContextHolder 解决静态方法引用Spring bean的尴尬

细心的朋友已经发现,每当我们在一个静态static方法中引用Spring的注入bean的时候,会报错: 告诉我们,不能再一个静态方法中引用一个非静态的变量。 我们可以定义一个通用的获取context中bean的静态方法,来解决例如此刻的引入。 import org.apache.commons.lang3.Validate; import org.springframework.beans.BeansException; import org.springframework.beans.fact

m0_37585329的博客 1073

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringContextHolder

/* * Copyright Huawei Symantec Technologies Co.,Ltd. 2008-2009. All rights reserved. * * */ package com.huaweisymantec.core.utils; import org.springframework.context.ApplicationContext; ...

会飞的猪 224

SpringContextHelper/SpringContextHolder偶现NullPointException异常

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34234829的博客 1537

Spring静态工具类中注入 Bean 的原理与实现

静态工具类不能直接向 static 字段注入 Bean,真正原因是 Spring 的标准依赖注入面向 Bean 实例,而不是 ApplicationContext 无法注入。本文通过 ApplicationContextAware 将容器引用桥接到静态上下文,分析 Aware 回调、resolvableDependencies 与 getBean 的实际机制,并说明该方案适合兼容既有静态调用,新代码仍应优先使用构造器注入。

Mr__Miss的博客 227

实现ApplicationContextAware接口后调用时候报空指针NullPointerException异常

自己写了一个工具类实现ApplicationContextAware接口方便在一些特定的情形无法使用spring容器里面的bean Caused by: java.lang.IllegalStateException: applicaitonContext未注入 at com.wangzunbin.infra.utils.SpringContextHolder.assertContextInjected(SpringContextHolder.java:90) ~[classes/:?] at co

CrazyRango的博客 5127

如何解决springBoot中的@PostConstruct和ApplicationContextAware冲突的问题。

因为项目中有使用创建一个springContextHolder类用于动态获取bean。并且是使用applicationContextAware使项目运行的时候自动创建。 @Override public void setApplicationContext(ApplicationContext applicationContext) { SpringContextHolder.applicationContext = applicationContext; } 然后有有地方使用了@postC.

m0_37859502的博客 2270

utils工具类想调用dao层接口怎么办?

今天需要在utils包下写一个关于租金计算的方法,但需要调用dao层接口去查询数据库数据,大家都知道正常情况下@Autowired无法注入静态的bean,记录一下我学到的两种方法。 第一种 @Component public class RentCalculationUtil { private static RentApplyDao rentApplyDao; private static HouseSourceDao houseSourceDao; @Autowired

godHhh的博客 1675

applicationContext=null 错误总结

Spring版本: Spring 4.2.5 问题: private static DictMapper dictDao = SpringContextHolder.getBean(DictMapper.class);通过SpringContextHolder获取上下文,applicationContext总是为null 问题分析: 1.SpringContextHolder采用配置文件

做最好的自己 1万+

记一次SpringContextHolder.getBean出现异常NoClassDefFoundError: Could not initialize class

记一次SpringContextHolder.getBean出现异常NoClassDefFoundError: Could not initialize class

kodmoqn的博客 624

如何取得Spring管理的bean

如何取得Spring管理的bean  (请用第3种方法): 1、servlet方式加载时, 【web.xml】 Xml代码 servlet>  servlet-name>springMVCservlet-name>  servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>

litianao的博客 224

消息队列监听器无法注入bean的问题解决

在使用ActiveMq或者其他消息队列的过程中,第一步对ActiveMq进行初始化的过程是放在ContextListener的初始化的时候的; 然而当mq接收到消息的时候触发getMqMsg方法的时候报错null,调试发现MqManageService根本没有获取到,我的想法是获取的方式不对,@Autowired这种方式获取bean不成功,但是bean肯定是已经存在于spring容器中的,如

gaoshili001的专栏 6268
上一篇: Redis保护模式配置引起的问题
下一篇: Optional避免空指针的用法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值