Springboot项目中如何让非Spring管理的类获得一个注入的Bean

 更新时间:2023年12月27日 09:58:47   作者:huangyaa729  
这篇文章主要介绍了Springboot项目中如何让非Spring管理的类获得一个注入的Bean问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Springboot让非Spring管理的类获得一个注入的Bean

由于业务需要,项目中集成了mqtt服务,在mqtt连接中需要设置个回调类,这个回调类定义为一个普通类,不通过Spring管理,但是在回调类中又需要引入数据库的操作,

采用通过注解引入的数据库框架类服务,显然不能通过简单的new Object() 来进行调用,因此需要采用一种方式引入已经注入的Bean:

通过各种尝试以及验证,找到了一种可行的方案

如下所示:

声明一个自定义的类

定义一个ApplicationContext对象 ,在需要操作的函数中,通过ApplicationContext对象引入注入的类即可:

public class MyTest{
  private static ApplicationContext applicationContext;

  public static void setApplicationContext(ApplicationContext context) {
    applicationContext = context;
  }
  
   public static void doSomething() {
    RestTemplate _restTemplate = applicationContext.getBean(RestTemplate.class);
    ........
  } 
}

在启动类中

得到ApplicationContext 对象,然后传递到自定义的类中,注意——只能在这个地方传入,否则无法正确获取ApplicationContext 对象;

@SpringBootApplication
public class Application{

  public static void main(String[] args) {
    final ApplicationContext applicationContext = 
                     SpringApplication.run(Application.class, args);
    MyTest.setApplicationContext(applicationContext);
  }
  
}

总结

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

相关文章

  • Java解决LocalDateTime传输前端为时间的数组

    Java解决LocalDateTime传输前端为时间的数组

    本文主要介绍了Java解决LocalDateTime传输前端为时间的数组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 分析Spring框架之设计与实现资源加载器

    分析Spring框架之设计与实现资源加载器

    Spring框架是由于软件开发的复杂性而创建的。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。今天来分析它的设计与实现资源加载器,从Spring.xml解析和注册Bean对象
    2021-06-06
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    这篇文章主要介绍了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Java Spring ApplicationEvent 代码示例解析

    Java Spring ApplicationEvent 代码示例解析

    本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、事务绑定、执行顺序),对Java Spring ApplicationEvent概念相关知识感兴趣的朋友一起看看吧
    2025-06-06
  • Java BufferedImage转换为MultipartFile方式

    Java BufferedImage转换为MultipartFile方式

    这篇文章主要介绍了Java BufferedImage转换为MultipartFile方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot执行异步任务Async介绍

    SpringBoot执行异步任务Async介绍

    这篇文章主要为大家介绍了SpringBoot执行异步任务Async示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 老生常谈java中cookie的使用

    老生常谈java中cookie的使用

    下面小编就为大家带来一篇老生常谈java中cookie的使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Java线程中断及线程中断的几种使用场景小结

    Java线程中断及线程中断的几种使用场景小结

    在并发编程中,合理使用线程中断机制可以提高程序的鲁棒性和可维护性,本文主要介绍了Java线程中断及线程中断的几种使用场景小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 分布式消息队列RocketMQ概念详解

    分布式消息队列RocketMQ概念详解

    RocketMQ 是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ 的特点是纯JAVA实现,是一套提供了消息生产,存储,消费全过程API的软件系统,本文详细介绍了分布式消息队列RocketMQ概念,需要的朋友可以参考下
    2023-05-05
  • 关于Java8的foreach中使用return/break/continue产生的问题

    关于Java8的foreach中使用return/break/continue产生的问题

    这篇文章主要介绍了关于Java8的foreach()中使用return/break/continue产生的问题,在使用foreach()处理集合时不能使用break和continue这两个方法,也就是说不能按照普通的for循环遍历集合时那样根据条件来中止遍历,需要的朋友可以参考下
    2023-10-10

最新评论