static静态类获取bean方法

SpringUtils工具类(getBean()) 代码】SpringUtils工具类(getBean()) 阅读详情

工具类的某个方法想要获取bean的实例,但是工具类的方法是static的,不能使用@Autowired 注入,这个时候需要重写

SpringContextHolder;
@Slf4j
public class SpringContextHolder implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    /**
     * 获取applicationContext
     */
    public static ApplicationContext getApplicationContext() {
        checkApplicationContext();
        return applicationContext;
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextHolder.applicationContext = applicationContext;
        log.info("get springContext is success");
    }

    /**
     * 获取spring bean
     */
    public static <T> T getBean(String beanName) {
        checkApplicationContext();
        return (T) applicationContext.getBean(beanName);
    }

    /**
     * 获取spring bean
     */
    public static <T> T getBean(String beanName, Class<T> clazz) {
        checkApplicationContext();
        return applicationContext.getBean(beanName, clazz);
    }

    /**
     * 获取spring bean
     */
    public static <T> T getBean(Class<T> clazz) {
        checkApplicationContext();
        Map<String, T> beans = applicationContext.getBeansOfType(clazz);
        if (beans.isEmpty()) {
            return null;
        }
        return beans.values().iterator().next();
    }

    private static void checkApplicationContext() {
        if (applicationContext == null) {
            throw new IllegalStateException("applicaitonContext为空,请检查配置");
        }
    }
}
小心!Spring Bean的静态陷阱:当static final遇上未就绪的容器 探索Spring Bean初始化与类加载时序冲突的致命陷阱,提供避免NullPointerException及确保容器就绪的最佳实践和解决方案。 阅读详情

相关推荐

spring static静态方法里面注入bean空指针解决

最近在跑一个公司花钱买的古老区块链,项目15年开发的。遇到了一个注入问题。该项目中注入jedisPool时使用了getBean()注入,然而怎么跑都是NullPoint,一翻扣头发后得已解决。 解决方法1 使用@Autowired的方式注入 必须在类上加@Component。我是用的这种 @Component public class KlineDataUtil { private static RedisService redisService; @Autowired public void set(RedisService redisService { KlineDataUtil

JavaAPI之注释类型 PostConstruct

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 结构 javax.annotation 注释类型 PostConstruct @Documented @Retention(value=RUNTIME) @Target(value=METHOD) p...

孤云博客 872

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1790

SpringUtil 工具类-静态方法获取Bean

static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。————————因为它不依附于任何对象,既然都没有对象,就谈不上this了。

Wcybaonier 2188

基于单片机的自动喷淋系统设计【毕业设计】

随着人民生活质量提高与生活节奏的加快,城市居民对于花草绿植的家庭培养与装饰需求增加,随之因浇灌植物的需要,智能浇花系统的市场逐渐扩大。现有自动浇花系统大部分只能通过设置固定浇水时间而难以实现适时、适量浇水,或在植物环境土壤含水量低时进行报警而并不能实际补水。为克服局限性而设计以单片机为控制中心的自动浇花系统。通过湿度传感器检测目标植物环境土壤湿度数据,再经ADCO832将其放大转换为数字量,由单片机读取输出向LCD1602 显示屏显示并通过比对键盘向单片机所设置的湿度范围而利用中断服务程序进行补水需求判断。

qq_48771816的博客 1709

IEPE传感器4mA恒流源接口电路

另外传感器的偏置电压大概在10V多点,一般接个电容把直流分量去掉。这里我们要把恒流源的电流设置在4毫安左右,R1取33Ω差不多正好。经过CR的隔直流电路后的波形是这样的。

老白的博客 6107

static关键字 + @Bean方法的使用

接下来就以这为两条主线,分别研究static在对应场景下的作用,本文将聚焦在静态内部类上。 版本约定 本文内容若没做特殊说明,均基于以下版本: JDK:1.8 Spring Framework:5.2.2.RELEASE 正文 说到Java里的static关键字,这当属最基础的入门知识,是Java中常用的关键字之一。你平时用它来修饰变量和方法了,但是对它的了解,即使放在JavaSE情景下知道这些还是不够的,问题虽小但这往往反映了你对Java基础的了解程度。 当然喽,本文并不讨...

li123128的博客 4606

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 198

SpringBoot静态方法获取 bean 的三种方式

包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

Y1567409的博客 2861

别再到处找资源了!WinCC 7.5 SP2官方下载与Windows 10保姆级安装避坑指南

本文提供了WinCC 7.5 SP2在Windows 10上的官方下载与安装全流程指南,重点解决了资源获取难、系统兼容性问题及分卷压缩处理等常见痛点。通过详细的步骤和实用技巧,帮助用户顺利完成安装并优化配置,适用于工控领域的学习者和从业者。

weixin_32924297的博客 472

国债期货的日线趋势跟踪策略实现(基于backtrader框架)

通过backtrader框架,我们可以轻松地实现国债期货的日线趋势跟踪策略,并进行回测和验证。通过这种策略,我们可以尝试捕捉国债期货价格的短期趋势,并根据趋势的方向进行交易决策。backtrader提供了许多内置的指标、订单类型和其他功能,可以帮助你进一步优化和改进你的策略。它提供了丰富的工具和功能,使我们能够快速实现和验证我们的交易想法。方法中,我们根据当前价格和前一天的价格判断趋势的方向,并根据趋势的变化进行买入或卖出操作。然后,我们设置了初始资金和交易手续费,并将我们定义的策略。来跟踪每日的收盘价。

NisyPhilosophy的博客 402

SpringBoot手动获取bean,调用静态方法从容器中获取对象

重写 ApplicationContextAware 接口里面的 setApplicationContext 方法 使用 @component注解,将普通JavaBean实例化到spring容器中。 import org.springframework.beans.BeansException; import org.springframework.context.ApplicationConte...

qq_42694534的博客 7549

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 369

笔记:SpringBoot静态类调用Bean的2种方案(小白友好版)

场景描述推荐方案理由静态工具类不想被Spring管理、需保持独立性方案一:SpringContextHolder侵入性低,工具类可脱离Spring使用静态工具类仅在Spring环境中使用、逻辑简单方案二:@PostConstruct无需新增中间类,代码量少,实现简单项目中静态工具类较多、需统一管理方案一:SpringContextHolder中间类可复用,维护成本低不想新增额外类、快速实现需求方案二:@PostConstruct直接改造工具类,几分钟就能搞定。

DolphinHome的博客 695

LVGL core disp显示设计(lv_disp.c)

lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。

Bigan(安)的博客 2329

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

static方法使用bean的方式

【代码】static方法使用bean的方式。

博观而约取 厚积而薄发 493

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

static静态方法工具类中注入bean失败,@Autowired在static方法中注入时失效导致的NullPointerException

static静态方法工具类中注入bean失败,@Autowired注入的对象在static方法中为null,报出空指针。根据SpringBoot启动和Bean注入的时机,各个注解生效时间,对象创建时间先后关系,稍微梳理后得出只能在运行时获取bean,那么答案就是运行中获取bean只能通过上下文对象ApplicationContext

阿韩的经验分享博客 1359

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

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

SpringBoot静态获取 bean的三种方式,你学会了吗?

????推荐大家关注一个公众号????点击上方 "编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文Tired heart is always hovering betwee...

程序员小乐 331

springboot 静态方法注入bean、使用@value给static变量赋值

首先新建你的方法类:DemoUtil 头部加注解:@Component @Component public class DemoUtil { } 新增静态变量: static DemoService demoService; 新增@Autowired的bean对象 @Autowired DemoService demoServiceMapping; ...

baicu7502的博客 940

java static spring_static静态方法内调用Spring(依赖注入)的bean

前言:一般需要在static方法里调用注入进来的service,因为是静态方法,所以必须声明该service也必须是static的,这时候你会发现注入不进来,会报null指针,这个时候需要使用@PostConstruct来解决。第一种Spring也基于JSR-250注解,包括@PostConstruct,@PreDestroy和@Resource注解。虽然这些注释都没有真正必需的,因为你已经有...

weixin_35881820的博客 1814

java bean 静态类_CoreJava笔记之JavaBean、静态方法static和final

记住两句话:1.属性是静态绑定到变量类型;2.方法是动态绑定,由最终对象的方法决定===============================关于JavaBean:1、不是语法规则,是习惯性编程规范,用这个规范写的类使用方便;2、规范:a、必须有包;b、是一个java类,具有无参数构造器;c、有用getXxx() 和setXxx()声明的Bean属性。如:getName()和setName(St...

weixin_39991935的博客 213

笔记:SpringBoot中静态工具类调用Bean的终极方案(小白友好版)

静态类不能直接@Autowired:因为加载时机不对,Spring还没初始化Bean;SpringContextHolder是“桥梁”:保存Spring的ApplicationContext,让静态类能拿到Bean;关键限制:必须在Spring启动完毕后使用,否则拿不到Bean。

DolphinHome的博客 820

Spring MVC 注解方式 静态类 注入bean

//核心代码 @Controller publicclassLy4sIFutil{ privatestaticLy4sServicemyLy4sService; Ly4sServicegetLy4sService(){ returnmyLy4sService; } //核心代码 ...

weixin_33873846的博客 345

Springboot使用-静态类读取配置文件

文章目录1 springboot读取配置文件的两种方式2 静态类读取配置文件 1 springboot读取配置文件的两种方式 属性上使用:@Value("${xxxx}") 类上使用:@ConfigurationProperties(prefix = "xxx") 2 静态类读取配置文件 思路 1 工具类增加静态属性的初始化方法init 2 创建bean对象 - 通过@ConfigurationProperties读取配置文件 - 通过component将bean对象注入到容器中 3 创建

hzp 4370

Bean 和 static的区别

Static 没有办法控制在多个并发请求的时候,只生成一个实例。有多少个请求就会生成多少个 实例,那么此时如果用 @Bean的方式来注解,就会启用SpringBoot中的单例模式,从始至终都只有一个实例。静态方法我们都知道,那么@Bean的方式怎么使用呢?

Crecendow 602
上一篇: 微信ocr识别收费以后换成插件调用踩坑记录invalid appid hint: [bnsIua07211091]
下一篇: WINDOWS 10 64BIT 下NODEJS报错MSBUILD : ERROR MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 “4.0”的解决方法
eternity_zzy
博客等级 码龄10年 2粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值