Spring Boot 普通的类中获取 Bean 对象的信息

时间 2021/5/6 16:46:47 加载中...

在 Spring Boot 项目中,在普通的类中如何获取 Bean 对象的信息?

使用场景

在一个普通类中要使用到配置文件中的配置,如果这个配置是在控制器中用到的话,我们可以直接使用 @Autowired 注入这个配置 Bean ,但在普通类中却不可以。这时候就需要我们获取 这个Bean 对象的信息

解决方法

构建如下类,然后通过此类获取即可。

  1. import org.springframework.beans.BeansException;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.ApplicationContextAware;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public class SpringUtils implements ApplicationContextAware{
  7. private static ApplicationContext applicationContext = null;
  8. @Override
  9. public void setApplicationContext(ApplicationContext arg0) throws BeansException {
  10. if (applicationContext == null) {
  11. applicationContext = arg0;
  12. }
  13. }
  14. // 获取applicationContext
  15. public static ApplicationContext getApplicationContext() {
  16. return applicationContext;
  17. }
  18. // 通过name获取 Bean.
  19. public static Object getBean(String name) {
  20. return getApplicationContext().getBean(name);
  21. }
  22. // 通过class获取Bean.
  23. public static <T> T getBean(Class<T> clazz) {
  24. return getApplicationContext().getBean(clazz);
  25. }
  26. // 通过name,以及Clazz返回指定的Bean
  27. public static <T> T getBean(String name, Class<T> clazz) {
  28. return getApplicationContext().getBean(name, clazz);
  29. }
  30. }

使用示例

在一个普通的类中访问配置信息

  1. HtmlParseConfig htmlParseConfig = SpringUtils.getBean(HtmlParseConfig.class);
  2. String url = htmlParseConfig.getUrl();
扫码分享
版权说明
作者:SQBER
文章来源:http://www.sqber.com/articles/spring-boot-get-the-bean.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。