java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Springboot让非Spring管理的类获得一个注入的Bean

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

作者: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);
  }
  
}

总结

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

您可能感兴趣的文章:
阅读全文