Springboot获取bean实例之SpringContextUtil详解

 更新时间:2025年03月27日 09:21:50   作者:stupid child  
这篇文章主要介绍了Springboot获取bean实例之SpringContextUtil使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Springboot获取bean实例-SpringContextUtil

1、工具类 SpringContextUtil

package XXXXXXXX;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 *
 * 获取spring容器,以访问容器中定义的其他bean
 */
@Component
public class SpringContextUtil implements ApplicationContextAware {

    // Spring应用上下文环境
    private static ApplicationContext applicationContext;

    /**
     * 实现ApplicationContextAware接口的回调方法,设置上下文环境
     *
     * @param applicationContext
     */
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextUtil.applicationContext = applicationContext;
    }

    /**
     * @return ApplicationContext
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过name获取对象
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }

}

2、要注入的bean

package XXXXX;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ShardingVariableConfig {
    @Value("${sharding.data.node}")
    private int dataNode;

    @Value("${sharding.table.node}")
    private int tableNode;
    //获取分库参数
    public int  getDataNode(){
        return this.dataNode;
    }
    //获取分表参数
    public int  getTableNode(){
        return this.tableNode;
    }
}

3、yml配置

4、方法中调用

 ShardingVariableConfig valueService = (ShardingVariableConfig) SpringContextUtil.getBean("shardingVariableConfig");//bean的名称
        int dataNode = valueService.getDataNode();

注意事项:

工具类SpringContextUtil和JavaBean都要加注解@Component,否则会Spring无法扫描到二者的位置

总结

通过此方法可以在任何地方调用JavaBean,解决@Autowired或@Resource无法注入的问题,无法直接通过@Value在某些类中取到值问题

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Swing自定义实现组件与表单工具

    Java Swing自定义实现组件与表单工具

    Swing 原生组件缺少一些常用的便捷方法,使用本文介绍了两个Java Swing实用工具类ComponentUtils和FormPanelUtils,ComponentUtils提供了通用组件操作封装,FormPanelUtils则专注于表单布局,感兴趣的可以了解下
    2026-05-05
  • Java中List数据去重的3种有效方法总结

    Java中List数据去重的3种有效方法总结

    在Java编程中,List集合是一种常用的数据结构,它允许我们存储和操作一组有序的对象,这篇文章主要介绍了Java中List数据去重的3种有效方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-02-02
  • 一分钟入门Java Spring Boot彻底解决SSM配置问题

    一分钟入门Java Spring Boot彻底解决SSM配置问题

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者
    2021-10-10
  • MybatisPlus多表连接查询的具体实现

    MybatisPlus多表连接查询的具体实现

    MyBatis Plus是一款针对MyBatis框架的增强工具, 它提供了很多方便的方法来实现多表联查,本文主要介绍了MybatisPlus多表连接查询的具体实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Java Lambda表达式的方法引用和构造器引用实例分析

    Java Lambda表达式的方法引用和构造器引用实例分析

    这篇文章主要介绍了Java Lambda表达式的方法引用和构造器引用,结合实例形式分析了Lambda表达式的方法引用和构造器引用相关原理、用法及操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Spring Boot+Nginx+MySQL容器化实战指南

    Spring Boot+Nginx+MySQL容器化实战指南

    这篇文章主要介绍了Spring Boot+Nginx+MySQL容器化实战指南,本文通过思路代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-03-03
  • java中以DES的方式实现对称加密并提供密钥的实例

    java中以DES的方式实现对称加密并提供密钥的实例

    这篇文章主要介绍了java中以DES的方式实现对称加密并提供密钥的实例的相关资料,这里提供实例帮助大家学习理解这部分知识,需要的朋友可以参考下
    2017-08-08
  • Java concurrency之CountDownLatch原理和示例_动力节点Java学院整理

    Java concurrency之CountDownLatch原理和示例_动力节点Java学院整理

    CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 下面通过本文给大家分享Java concurrency之CountDownLatch原理和示例,需要的的朋友参考下吧
    2017-06-06
  • 如何为 Spring Boot 项目配置 Logback 日志

    如何为 Spring Boot 项目配置 Logback 日志

    由于 Spring Boot 的默认日志框架选用的 Logback,再加上 Log4j2 之前爆过严重的漏洞,所以我们这次就只关注 Logback,本文重点给大家介绍如何为 Spring Boot 项目配置 Logback 日志,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 如何将java或javaweb项目打包为jar包或war包

    如何将java或javaweb项目打包为jar包或war包

    本文主要介绍了如何将java或javaweb项目打包为jar包或war包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论