zoukankan      html  css  js  c++  java
  • 【Spring Boot】Spring Boot之五种容器启动后进行相关应用初始化操作方法

    一、方式一,使用ApplicationListener<E extends ApplicationEvent>监听ContextRefreshedEvent事件

    /**
     * @author zhangboqing
     * @date 2019-11-03
     */
    @Component
    public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
        @Autowired
        private MyService myService;
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
            System.out.println(">>>>>>>>>>>>>> ApplicationListener:" + myService.sayHello());
        }
    }

    二、方式二,使用SmartInitializingSingleton

    /**
     * @author zhangboqing
     * @date 2019-11-03
     */
    @Component
    public class MySmartInitializingSingleton implements SmartInitializingSingleton {
        @Autowired
        private MyService myService;
    
        @Override
        public void afterSingletonsInstantiated() {
            System.out.println(">>>>>>>>>>>>>> SmartInitializingSingleton:" + myService.sayHello());
        }
    }

    三、方式三,使用SmartLifecycle

    /**
     * @author zhangboqing
     * @date 2019-11-03
     */
    @Component
    public class MySmartLifecycle implements SmartLifecycle {
    
        @Autowired
        private MyService myService;
    
        @Override
        public void start() {
            System.out.println(">>>>>>>>>>>>>> SmartLifecycle:" + myService.sayHello());
        }
    
        @Override
        public boolean isAutoStartup() {
            return true;
        }
    
        @Override
        public void stop(Runnable callback) {
    
        }
    
        @Override
        public void stop() {
    
        }
    
        @Override
        public boolean isRunning() {
            return false;
        }
    
        @Override
        public int getPhase() {
            return 0;
        }
    }

    四、方式四,使用ApplicationRunner

    /**
     * @author zhangboqing
     * @date 2019-11-07
     */
    @Component
    public class MyApplicationRunner implements ApplicationRunner {
        @Autowired
        private MyService myService;
    
        @Override
        public void run(ApplicationArguments args) throws Exception {
            System.out.println(">>>>>>>>>>>>>> ApplicationRunner:" + myService.sayHello());
        }
    }

    五、方式五,使用CommandLineRunner

    /**
     * @author zhangboqing
     * @date 2019-11-07
     */
    @Component
    public class MyCommandLineRunner implements CommandLineRunner {
    
        @Autowired
        private MyService myService;
    
        @Override
        public void run(String... args) throws Exception {
            System.out.println(">>>>>>>>>>>>>> CommandLineRunner:" + myService.sayHello());
        }
    }
  • 相关阅读:
    18.3.2从Class上获取信息(属性)
    18.3.2从Class上获取信息(方法)
    18.3.2从Class上获取信息(构造器)
    18.3.1获得Class对象
    ClassLoader.loadClass和Class.forName的区别
    java线程池原理
    如何理解「不要用战术上的勤奋掩盖战略上的懒惰」?
    (转)生产者/消费者问题的多种Java实现方式
    Machine learning system design---Error analysis
    Machine learning system design---prioritizing what to work on
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/11789199.html
Copyright © 2011-2022 走看看