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

springboot 在自定义注解中注入bean,解决注入bean为null的问题

问题:

在我们开发过程中总会遇到比如在某些场合中需要使用service或者mapper等读取数据库,或者某些自动注入bean失效的情况

解决方法:

1.在构造方法中通过工具类获取需要的bean

工具类代码:


import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** @author* @decription 通过工具类获取需要的的bean*/
@Component
public class BeanContextUtils implements ApplicationContextAware {/*** 上下文对象实例*/private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {BeanContextUtils.applicationContext = applicationContext;}/*** 获取applicationContext** @return*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 通过name获取 Bean.** @param name* @return*/public static Object getBean(String name) {return getApplicationContext().getBean(name);}/*** 通过class获取Bean.** @param clazz* @param <T>* @return*/public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}/*** 通过name,以及Clazz返回指定的Bean** @param name* @param clazz* @param <T>* @return*/public static <T> T getBean(String name, Class<T> clazz) {return getApplicationContext().getBean(name, clazz);}}

注入代码:

2.通过set方法注入bean

 private static SysDictFeignService service;@Autowiredpublic void setSysDictFeignService(SysDictFeignService service){DictValidator.service = service;}

 3.通过有参构造方法传入

相关文章:

  • mac M系列芯片安装chatGLM3-6b模型
  • 软件测试外包干了2个月,技术进步2年。。。
  • ComplexHeatmap热图专栏 | 6. 3D热图绘制教程
  • 基于单片机的电子密码锁设计
  • GCN01——Ubuntu中设置vivado编辑器为vscode
  • 【Redis】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)
  • 【智能家居】四、网络服务器线程控制功能点
  • 2.Ansible的copy模块,我最常用的模块
  • 电脑版便签软件怎么设置在桌面上显示?
  • 【C++】多线程(二):std::mutex std::atomic的使用
  • AndroidStudio - 新版本 Logcat 使用详解
  • word中如何插入公式,如何高效使用mathtype,遇到他人论文的复杂公式如何直接粘贴复制,为你一一答疑解惑!!
  • [英语学习][9][Word Power Made Easy]的精读与翻译优化
  • Boost:asio单io_service,单线程run
  • iOS(swiftui)——网络连接(Moya)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • angular学习第一篇-----环境搭建
  • GitUp, 你不可错过的秀外慧中的git工具
  • gops —— Go 程序诊断分析工具
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 基本功--面试宝典
  • SAP云平台里Global Account和Sub Account的关系
  • SpringBoot 实战 (三) | 配置文件详解
  • tweak 支持第三方库
  • vue-router 实现分析
  • Yeoman_Bower_Grunt
  • 基于axios的vue插件,让http请求更简单
  • 聊聊flink的TableFactory
  • 前端相关框架总和
  • 如何用vue打造一个移动端音乐播放器
  • 使用docker-compose进行多节点部署
  • 移动端唤起键盘时取消position:fixed定位
  • HanLP分词命名实体提取详解
  • ​第20课 在Android Native开发中加入新的C++类
  • # 透过事物看本质的能力怎么培养?
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #在 README.md 中生成项目目录结构
  • $refs 、$nextTic、动态组件、name的使用
  • (¥1011)-(一千零一拾一元整)输出
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)STM32单片机上位机
  • (java)关于Thread的挂起和恢复
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (五)MySQL的备份及恢复
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)项目管理杂谈-我所期望的新人
  • .gitignore文件---让git自动忽略指定文件
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)