zoukankan      html  css  js  c++  java
  • SpringBoot启动

    一、启动时加载数据,就用CommandLineRunner

    只需要将类实现CommandLineRunner,并且加上Component注解,还可以通过Order来控制启动顺序。

    @Component
    @Order(value=1)
    public class MyStartupRunner2 implements CommandLineRunner {
    
        @Override
        public void run(String... args) throws Exception {
            System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 22222222 <<<<<<<<<<<<<");
        }
    
    }
    

    另一种方法是:实现ApplicationRunner,这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。

    二、Spring中Bean的生命周期

    对于Singleton作用域的Bean,Spring容器将会跟踪它们的生命周期,容器知道何时实例化结束、何时销毁。Spring可以管理Bean在实例化结束之后和Bean销毁之前的行为。
    Spring默认所有的Bean都是Singleton,如果是原型类型的,可以使用@Scope("prototype")进行注解。

    1、Bean依赖注入完成之后的初始化操作

    有三种方式:

    1. 使用XML配置
      在Spring配置文件中使用init-method属性:这个属性指定某个方法在Bean全部依赖关系设置结束后自动执行。这个方法写在Bean里面。使用这种方法不需要将代码与Spring耦合在一起,代码污染小,推荐使用。
    2. 使用注解
      使用@PostConstruct
    3. 实现接口
      让Bean实现InitializingBean接口:该接口提供了一个afterPropertiesSet() throwsException方法,在Bean里面实现它。

    Spring容器会在为该Bean注入依赖关系后,调用该Bean实现的afterPropertiesSet方法。

    2、Bean销毁之前的操作

    1. 使用destroy-method属性:指定某个方法在Bean销毁之前被自动执行。使用这种方法,不需要将代码与Spring的接口耦合在一起,代码污染小,推荐使用。
    2. 实现DisposableBean接口:该接口提供了一个destroy() throws Exception的方法。在Bean里面实现它,这个方法将在Bean销毁之前被Spring调用。
    3. 使用@PreDestroy

    注:

    • PostConstruct和PreDestroy是JavaEE的内容,不是Spring的注解。

    参考资料

    Spring中管理Bean依赖注入之后和Bean销毁之前的行为

  • 相关阅读:
    杂货铺
    oracle修改已存在数据的字段类型
    使用python读取配置文件并从mysql数据库中获取数据进行传参(基于Httprunner)
    HttpRunner完整笔记(从搭建到应用)
    使用jmeter发送put请求的三种方式
    电脑同时安装了python2和python3后,随意切换版本并使用pip安装
    python+request+HTMLTestRunner+unittest接口自动化测试框架
    redis简介
    spring cloud gateway之服务注册与发现
    spring cloud gateway 之限流篇
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6854786.html
Copyright © 2011-2022 走看看