博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot获取ApplicationContext
阅读量:5952 次
发布时间:2019-06-19

本文共 1690 字,大约阅读时间需要 5 分钟。

hot3.png

有两种方法:

  • 创建Component实现ApplicationContextAware接口,SpringBoot会自动调用这个类的setApplicationConext()方法。鼓励使用这种方式。
  • SpringApplication.run(MyApplication.class, args)这句话的返回值就是一个ConfigurableApplicationContext对象,直接用静态变量把这个对象保存下来就可以了。

需要注意的是,SpringBoot只会扫描MyApplication.java所在包及其子包下的Component注解、Controller注解等。为了避免不必要的麻烦,一定要遵循“约定大于配置”原则,把MyApplication.java放在根包下。

使用ApplicationContextAware的方式代码如下:

@Component  public class SpringUtil implements ApplicationContextAware {        private static ApplicationContext applicationContext = null;  // 非@import显式注入,@Component是必须的,且该类必须与main同包或子包      // 若非同包或子包,则需手动import 注入,有没有@Component都一样      // 可复制到Test同包测试        @Override      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {          if(SpringUtil.applicationContext == null){              SpringUtil.applicationContext  = applicationContext;          }          System.out.println("---------------com.ilex.jiutou.util.Test.Main.SubPackage.SpringUtil---------------");      }        //获取applicationContext      public static ApplicationContext getApplicationContext() {          return applicationContext;      }        //通过name获取 Bean.      public static Object getBean(String name){          return getApplicationContext().getBean(name);        }        //通过class获取Bean.      public static 
T getBean(Class
clazz){ return getApplicationContext().getBean(clazz); } //通过name,以及Clazz返回指定的Bean public static
T getBean(String name,Class
clazz){ return getApplicationContext().getBean(name, clazz); } }

转载于:https://my.oschina.net/u/2262481/blog/1630225

你可能感兴趣的文章
JAVAEE-junit测试hibernate里的方法(hibernate交给spring管理)的问题
查看>>
MOTO MB860 国行2.3.5优化增强ROM_Top_T5_end(经典收藏版)
查看>>
C#学习经典(二)---MVC框架(Model view Controller)
查看>>
log4j配置文件说明
查看>>
Maven: 为Compiler插件设置source和target版本
查看>>
linux下永久添加静态路由
查看>>
android 全局变量和局部变量命名规则
查看>>
Ubuntu Sub-process /usr/bin/dpkg
查看>>
详解DNS的常用记录(下):DNS系列之三
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>
只要会营销,shi都能卖出去?
查看>>
sed单行处理命令奇偶行输出
查看>>
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
查看>>
VC++深入详解学习笔记1
查看>>
安装配置discuz
查看>>
CentOS7 64位小型操作系统的安装
查看>>
线程互互斥锁
查看>>
KVM虚拟机&openVSwitch杂记(1)
查看>>
win7下ActiveX注册错误0x80040200解决参考
查看>>