当前位置: 首页 > news >正文

一站式做网站哪家好做效果图的方便的网站

一站式做网站哪家好,做效果图的方便的网站,江西工厂网站建设,上海人才网站建设1. ApplicationRunner接口 用法: 类型: 接口 方法: 只定义了一个run方法 使用场景: springBoot项目启动时,若想在启动之后直接执行某一段代码,就可以用 ApplicationRunner这个接口,并实现接口…

1. ApplicationRunner接口

用法:

  • 类型: 接口

  • 方法: 只定义了一个run方法

  • 使用场景: springBoot项目启动时,若想在启动之后直接执行某一段代码,就可以用 ApplicationRunner这个接口,并实现接口里面的run(ApplicationArguments args)方法,方法中写上自己的代码逻辑。也就是:spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。

  • run方法的参数: ApplicationArguments可以获取到当前项目执行的命令参数。(比如把这个项目打成jar执行的时候,带的参数可以通过ApplicationArguments获取到);

@Component  //此类一定要交给spring管理
public class ConsumerRunner implements ApplicationRunner{@Overridepublic void run(ApplicationArgumers args) throws Exception{//代码System.out.println("需要在springBoot项目启动时执行的代码---");}
}

若有多个代码段需要执行,可用@Order注解设置执行的顺序。

在同一个项目中,可以定义多个ApplicationRunner的实现类,他们的执行顺序通过注解@Order注解或者再实现Ordered接口来实现。
@Order注解: 如果有多个实现类,而你需要他们按一定顺序执行的话,可以在实现类上加上@Order注解。@Order(value=整数值)。SpringBoot会按照@Order中的value值从小到大依次执行。

@order, 使用注解方式使bean的加载顺序得到控制;@Order标记定义了组件的加载顺序,值越小拥有越高的优先级,可为负数。值越小,越先被加载。
@Order(-1) 优先于 @Order(0)
@Order(1) 优先于 @Order(2)

@Component  //此类一定要交给spring管理
@Order(value=1) //首先执行
public class ConsumerRunnerA implements ApplicationRunner{@Overridepublic void run(ApplicationArgumers args) throws Exception{//代码System.out.println("需要在springBoot项目启动时执行的代码1---");}
}
@Component  //此类一定要交给spring管理
@Order(value=2) //其次执行
public class ConsumerRunnerB implements ApplicationRunner{@Overridepublic void run(ApplicationArgumers args) throws Exception{//代码System.out.println("需要在springBoot项目启动时执行的代码2---");}
}

@Component注解: 将类注入到spring容器中。

参考链接:https://blog.csdn.net/hc1285653662/article/details/122445495

2. CommandLineRunner接口

用法:

在容器启动成功后的最后一步回调(类似开机自启动)
写一个类,实现CommandLineRunner接口,将该类注入到Spring容器中;

可以通过@Order注解(属性指定数字越小表示优先级越高)或者Ordered接口来控制执行顺序。

EX:自定义两个类,实现CommandLineRunner接口,实现run方法,在run方法中添加处理逻辑。

@Order(5)
@Component
public class AppStartReport implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("AppStartReport : 项目成功启动------------------");}
}
@Order(2)
@Component
public class AppStartReport2 implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("AppStartReport2 : 项目成功启动------------------");}
}

启动效果:AppStartReport2 较AppStartReport 先执行:
在这里插入图片描述

3. ApplicationRunner接口与CommandLineRunner接口的区别

区别:

  1. CommandLineRunner的方法参数是原始的参数,未做任何处理;
  2. ApplicationRunner的参数为ApplicationArguments对象,是对原始参数的进一步封装。ApplicationArguments是对参数(主要针对main方法)做了进一步的处理,可以解析–name=value的参数,我们就可根据name获取value。
@Component
public class AppStartReport3 implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("AppStartReport3 : 项目成功启动,参数为: " + Arrays.asList(args.getSourceArgs()));}
}
@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication application = new SpringApplication(App.class);ConfigurableApplicationContext context = application.run("aaa", "bbb");context.close();}
}

自行指定参数后,执行效果如下:
在这里插入图片描述

也可以在Program arguments选项框设置初始值,“–key=value“形式,如“–argname=ccc”,如下图所示:
在这里插入图片描述

@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication application = new SpringApplication(App.class);ConfigurableApplicationContext context = application.run(args);context.close();}
}

启动器传入参数为main方法的参数args,效果如下:
在这里插入图片描述

ApplicationArguments 源码分析

public interface ApplicationArguments {String[] getSourceArgs();Set<String> getOptionNames();boolean containsOption(String name);List<String> getOptionValues(String name);List<String> getNonOptionArgs();}

资源参数分为两种,一种是在调用run方法时传入的(”aaa”,”bbb”),一种是配置的系统参数即main方法的args参数(”ccc”)。

  • 首先getSourceArgs方法,可以获取到所有参数,可以是自己传入的参数,也可以是配置的系统参数;

  • getNonOptionArgs方法即可获得我们传入的参数(”aaa”,”bbb”)。;

  • 其余3个方法,可获得系统参数。实际用法如下:
    EX:

@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication application = new SpringApplication(App.class);ConfigurableApplicationContext context = application.run(args);ApplicationArguments arguments = context.getBean(ApplicationArguments.class);System.out.println("参数个数:" + arguments.getSourceArgs().length);System.out.println("Non OptionArgs:" + arguments.getNonOptionArgs());System.out.println("Option Names:" + arguments.getOptionNames());System.out.println("获取key为argname的value值:" + arguments.getOptionValues("argname"));System.out.println("是否包含key为argname的参数:" + arguments.containsOption("argname"));context.close();}
}

输出效果:
在这里插入图片描述

参考链接:https://blog.csdn.net/qq_35006663/article/details/102264172

http://www.yayakq.cn/news/688131/

相关文章:

  • 多说评论插件对网站优化东莞做网站哪个公司最好
  • jsp网站项目想设计一个自己的logo
  • 现代感网站做娱乐网站被坑
  • 网站开速度 流失wordpress股市实时数据
  • 网站建设帝国c 还可以做网站
  • 包装设计网站排行榜前十名品牌建设策略论文
  • 中山网站的优化wordpress怎么当站长
  • 建设网站如何赚钱机关建设网站
  • 成都有哪些网站开发公司8免费建站网站
  • wordpress %2$s宝塔优化wordpress
  • 高端网站建设公司好吗招聘网官网
  • 信息网站建设汇报使用vue做商城网站项目难点
  • 黄岛区城市建设局网站义乌义亭招工做网站养猪工作
  • 东营 网站 建设投简历找工作哪个网站好
  • 网站建设全程揭秘 光盘文件网站建设新闻发布
  • 哪个模板建站好深圳专业学校网站建设
  • 网站开发设计思想个人网站推广平台大全
  • 怎么样才能搜索到自己做的网站wordpress更改主机
  • 江苏省建设执业中心网站深圳搜索优化排名公司
  • 茂名网站优化新浪网站首页
  • 快速网站仿制南昌seo
  • 如何自己做淘宝客推广网站电脑做网站主机空间
  • 做网站一个月赚多少杭州移动网站建设
  • 长沙网站制作公司哪家好网站空间800m
  • 网站 建设在作用是什么百度地图在线导航查询
  • 服务机构电子商务网站有哪些国际新闻环球网
  • 做门户网站用什么软件网站后台用户管理系统
  • 安吉哪里做网站好郑州男科十佳医院排名
  • 最火的做牛排沙拉网站网站开发构成
  • 怎么做同城购物网站网站底部图片代码