SpringBoot获取ApplicationContext

本文介绍了两种在SpringBoot中获取ApplicationContext的方法:一是通过实现ApplicationContextAware接口并在SpringBoot启动时自动调用setApplicationContext方法;二是直接保存SpringApplication.run的返回值。此外,还提供了一个具体的实现案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两种方法:

  • 创建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> T getBean(Class<T> clazz){  
        return getApplicationContext().getBean(clazz);  
    }  
  
    //通过name,以及Clazz返回指定的Bean  
    public static <T> T getBean(String name,Class<T> clazz){  
        return getApplicationContext().getBean(name, clazz);  
    }  
  
}  

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

Spring Boot的ApplicationContext是Spring框架中的一个接口,用于管理和访问应用程序的Bean容器。与BeanFactory相比,ApplicationContext具有更多的功能和特性,并且在大多数情况下,开发者会直接使用ApplicationContext而不是底层的BeanFactory。 在Spring Boot中,可以通过三种方式获取ApplicationContext: 1. 创建一个ConfigurableApplicationContext对象,并调用其createApplicationContext()方法来创建ApplicationContext。这种方式主要是通过反射来获取默认的ApplicationContext实现类,并进行实例化。 2. 使用Spring Boot提供的注解@Autowire注入ApplicationContext实例。这种方式可以直接在需要使用ApplicationContext的地方进行注入,方便调用。 3. 在配置文件中通过配置参数来指定ApplicationContext的实现类。这种方式可以在应用启动时通过配置文件来指定使用的ApplicationContext实现类,从而灵活地选择不同的实现方式。 总之,Spring Boot的ApplicationContext是Spring框架中非常重要的一个组件,用于管理Bean的创建、初始化和注入。开发者可以根据实际需要选择合适的方式获取和使用ApplicationContext。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot ApplicationContext分析](https://blog.youkuaiyun.com/qq_37436172/article/details/127759107)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot获取ApplicationContext的3种方式](https://download.youkuaiyun.com/download/weixin_38616120/12746337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值