• SpringBoot 四种获取ApplicationContext的方式


    参考:https://juejin.cn/post/6844903968234176519

    SpringBoot 获取ApplicationContext的方式

    由于之前比较懒,每次想要获取Spring上下文的时候。都去现查方案,而且最近发现使用的频率还挺高,因此对获取Spring上下文的方式做了一下总结。
    一共总结了四种获取方式。
    先自定义一个存放Application的实体bean
    public class SpringBeanUtils  {
        private static ApplicationContext applicationContext;
        public static void setApplicationContext(ApplicationContext applicationContext){
            SpringBeanUtils.applicationContext = applicationContext;
        }
    }
    复制代码
    

    1. 实现ApplicationContextInitializer接口

    具体代码如下:

    public class SecondApplicationContextInitializer implements ApplicationContextInitializer {
      @Override
      public void initialize(ConfigurableApplicationContext applicationContext) {    
         SpringBeanUtils.setApplicationContext(applicationContext);
      }
    }
    复制代码
    

    实现此步骤之后,还需要将此类注入到Spring容器中,有两种方式

    第一种: 在此类上加`@Component`注解
    第二种:在 `resources/META-INF/spring.factories`文件中添加以下配置
    org.springframework.context.ApplicationContextInitializer=\
    SecondApplicationContextInitializer的路径
    复制代码
    

    2. 实现ApplicationListener接口

    具体代码如下:

    public class CustApplicationListener implements ApplicationListener<ApplicationContextEvent> {
      @Override
      public void onApplicationEvent(ApplicationContextEvent event) {        
         SpringBeanUtils.setApplicationContext(event.getApplicationContext());
      }
    }
    复制代码
    

    实现此步骤之后,还需要将此类注入到Spring容器中,有两种方式

    第一种: 在此类上加`@Component`注解
    第二种:在 `resources/META-INF/spring.factories`文件中添加以下配置
    org.springframework.context.ApplicationListener=\
    CustApplicationListener的路径
    复制代码
    

    3. 放在启动类main方法中设置

    具体代码如下

    @SpringBootApplication
    public class WangMikeSpringApplication {
        public static void main(String[] args) {
            ConfigurableApplicationContext applicationContext = SpringApplication.run(WangMikeSpringApplication.class, args);        
            SpringBeanUtils.setApplicationContext(applicationContext);
        }
    }
    复制代码
    

    4. 实现ApplicationContextAware接口

    具体代码如下

    @Component
    public class SpringBeanUtils implements ApplicationContextAware {
        private static ApplicationContext applicationContext;
        public  void setApplicationContext(ApplicationContext applicationContext){
            SpringBeanUtils.applicationContext = applicationContext;
        }
    }
    复制代码
    
  • 相关阅读:
    UI自动化测试框架
    Pyse( selenium-api的二次封装)
    Selenium之webdriverAPI
    selenium 基础之定位方式
    html综合应用
    html基础之js操作
    html基础之Dom操作
    (九)Locust 参数化
    (八)Locust 设置断言
    (七)Locust 的类和方法
  • 原文地址:https://www.cnblogs.com/kuangke/p/16880762.html
Copyright © 2020-2023  润新知