Spring Boot:热部署与系统启动任务

热部署

在代码修改完成以后,需要重新启动项目,花费大量时间
热部署就是为了解决这个问题
加入热部署
idea中使用热部署需要引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>

在idea中,每当你编译的时候,就会自动重启
编译按钮为Build中的Build Project
在这里插入图片描述

系统启动任务

不使用框架的解决方案

在项目启动阶段需要一些数据初始化操作,这些操作有一个共同的特点,只有在项目启动时进行,以后都不执行。
这种情况,一般定义一个ContextServlet的Listener来监听项目启动和销毁,来实现相应的数据初始化和销毁操作
如下
在这里插入图片描述

public class OriginListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //在这里做初始化操作
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    //在这里做数据备份操作
    }
}

SpringBoot的解决方案

SpringBoot中针对系统启动任务提供了两种解决方案

1.CommandLineRunner

创建类
在这里插入图片描述

//注册为Spring容器中的一个Bean
@Component
//表示项目启动的优先级,因为在一个项目中,启动项目可能有很多个。如果不设置,默认情况下,优先级最低
@Order(100)
public class OriginCommandLineRunner implements CommandLineRunner {
    @Override
    //当项目启动时,run方法被执行
    //run方法的参数,来自于项目的启动参数,即项目入口类(Applicaion)中main方法的参数
    public void run(String... args) throws Exception {
        System.out.println(Arrays.toString(args)+"123");
    }
}

此时,当启动项目 时候,run方法会被执行,至于参数args可以通过两种方式传递

1,通过Program arguments传入参数

在这里插入图片描述
中的Program arguments
在这里插入图片描述

2.命令行启动项目

将项目打包,在命令行中启动项目,然后在启动时在命令行中传入参数
在这里插入图片描述
运行jar包
举例:
在这里插入图片描述

2.ApplicationRunner

使用ApplicationRunner

@Component
@Order(98)
public class OriginApplicationRunner implements ApplicationRunner {
    @Override
    //相比于CommadnLineRunner参数不同
    public void run(ApplicationArguments args) throws Exception {

      List<String> a= args.getNonOptionArgs();//获取命令行中无key的参数,相当于CommandLineRunner
        System.out.println(a);
        Set<String> b=args.getOptionNames();//获取所有的key/value形式的参数
        for (String key:b){
                     System.out.println(key+":"+args.getOptionValues(key));//获取key/value形式的参数
        }
        //获取命令行的所有参数
        String[] c=args.getSourceArgs();
        System.out.println(Arrays.toString(c));
        
    }
}

在这里插入图片描述
中的Program arguments
在这里插入图片描述
key/value使用–传输
–touxian=hahahah

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值