当前位置: 首页 > news >正文

2种方式从springbean中获取bean实例

解决@Autowired获取不到bean实例的解决办法

1.PublicSqlMapper sqlMapper = ApplicationContextUtils.getBean(PublicSqlMapper.class);

package com.admin.common.utils.bean;import org.apache.commons.text.WordUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/**** @author wangwei* @date 2025-09-10* 上下文获取bean* 使用场景:* 1.非 Spring 管理的类中使用 Spring Bean,当需要在普通 Java 类(未被@Component、@Service等注解标记的类)中使用 Spring 管理的 Bean 时,可以通过该工具类获取*2.静态方法中使用 Spring Bean:静态方法中使用 Spring Bean* 3.优先推荐使用依赖注入(@Autowired、@Resource等)的方式获取 Bean,只有在确实无法使用依赖注入时才考虑使用此类***/@Component
//类获取 Spring 的应用上下文(ApplicationContext)
public class ApplicationContextUtils implements ApplicationContextAware {private static ApplicationContext context;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {ApplicationContextUtils.context = applicationContext;}/*** 返回 Spring 应用上下文** @return*/public static ApplicationContext getContext() {return context;}/**** getBean 根据 Bean 名称获取 Bean 实例* @param beanName* @return*/public static Object getBean(String beanName) {return context.getBean(beanName);}/**** 根据 Bean 名称和类型获取指定类型的 Bean* @param beanName* @param requiredType* @param <T>* @return*/public static <T> T getBean(String beanName, Class<T> requiredType) {return context.getBean(beanName, requiredType);}public static <T> T getBean(Class<T> requiredType) {String simpleName = requiredType.getSimpleName();String name = WordUtils.uncapitalize(simpleName);T obj = null;try {obj = getBean(name, requiredType);} catch (NoSuchBeanDefinitionException e) {}if (obj != null) {return obj;}return context.getBean(requiredType);}
}

2.

SpringUtils.getBean(ISysOperLogService.class).insertOperlog(operLog);

http://www.dtcms.com/a/398880.html

相关文章:

  • iPhone 无线充电发展历史
  • 做康复医院网站推广普通话手抄报
  • Win版 Visual Studio Code配置C++环境
  • 住房与住房建设部网站中美最新军事新闻最新消息
  • uniapp 项目打包时提示未添加videoplayer模块
  • 深入理解Roo Code中的Temperature参数
  • 四、PyTorch训练分类器教程:小张的CIFAR-10实战之旅
  • Unity-序列帧动画
  • 【每日一问】容性负载和感性负载有什么区别?
  • 做汽车保养的网站上企业信息的网站
  • 4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件包含漏洞-A
  • 郑州网站建设国奥大厦南昌营销网站建设
  • 微服务项目->在线oj系统(Java-Spring)----7.0
  • Ant Design Vue Vue3 table 表头筛选重置不清空Bug
  • 【踩坑记录】PyTorch 被误装 CPU 版本导致 CUDA 丢失的解决办法(Windows + Anaconda)
  • 5个问题,帮你选择合适的API测试工具
  • 唐山做网站公司费用郑州做网站哪家好熊掌号
  • 为什么齐次线性方程组的系数行列式为零时有非零解?
  • Cursor Agent模式下面在指定的conda虚拟环境中执行python脚本
  • 福州网站建设加推广怎样把网站打包做百度小程序
  • 元宇宙的工业应用:数字工厂与智能制造
  • C语言程序设计笔记—printf的使用
  • 【UE5】使用虚幻引擎编辑器创建游戏
  • Nginx 部署及配置
  • 服务器建设一个自己的网站奖券世界推广网站
  • 网络编程套接字之UDP
  • 亚马逊做网站发礼物换评价动漫制作专业能选择什么职业
  • 阿里云推出全球首个全模态AI模型Qwen3-Omni,实现文本、图像、音视频端到端处理
  • git介绍
  • ELK 企业级日志分析系统实战指南