//使用2个类的run方法都可以在项目启动时加载配置,唯一不同的是他们的参数不一样,CommandLineRunner的run方法参数是基本类型,ApplicationRunner的run方法参数是一个ApplicationArguments对象

下面做个ip黑名单的demo:

首先在application.yml配置ip黑名单,如下图

之后在启动时,加载进入内存:

  1. package com.example.demo.config;
  2.  
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.boot.CommandLineRunner;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.util.StringUtils;
  7.  
  8. import java.util.HashSet;
  9. import java.util.Set;
  10.  
  11. @Configuration
  12. public class Ipconfig implements CommandLineRunner{
  13. @Value("${ipBlack._set}")
  14. private String ipBlack;
  15.  
  16. public static final Set<String> ipblackSet=new HashSet<>();
  17.  
  18. public void run(String... strings) throws Exception {
  19. if(StringUtils.isEmpty(ipBlack)){
  20. System.out.println("没有黑名单");
  21. }
  22. String[] split = ipBlack.split("\\\n");
  23. for (String s : split) {
  24. ipblackSet.add(s.trim());
  25. }
  26. System.out.println(ipblackSet);
  27.  
  28. }
  29. }
  30. //为了测试2个类,谁的run方法先执行,下面写了一个demo:
  31. package com.example.demo.config;
  32.  
  33. import org.springframework.boot.ApplicationArguments;
  34. import org.springframework.boot.ApplicationRunner;
  35. import org.springframework.stereotype.Component;
  36.  
  37. @Component
  38. public class IPConfig2 implements ApplicationRunner {
  39. @Override
  40. public void run(ApplicationArguments applicationArguments) throws Exception {
  41.  
  42. System.out.println("是不是我先执行呢");
  43. }
  44. }
  45.  
  46. 注意:类上要加注解componet或者其他的,让spring管理,不然没效果
  47. 结果如图:

项目启动加载配置,以及IP黑名单,使用CommandLineRunner和ApplicationRunner来实现(一般用在网关进行拦截黑名单)的更多相关文章

  1. java web项目启动加载顺序

    转载:https://www.cnblogs.com/writeLessDoMore/p/6935524.html web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:T ...

  2. --print-defaults打印mysqld启动加载配置

    Mysql启动配置文件加载路径     Mysql可以读取到的配置文件         /etc/my.cnf         /etc/mysql/my.cnf         /usr/local ...

  3. 遇到的问题之"项目启动加载不出页面"

    已找到解决方案1 需要启动这两个微服务(注意:这个属于个人,你们也可以看看是否关联到相关微服务未启动)

  4. nginx 启动,停止和重新加载配置

    要启动nginx的,运行可执行文件.一旦nginx的启动时,它可以通过与-s参数调用可执行来控制.使用以下语法 nginx -s signal 其中,信号可以是下列之一: stop - fast sh ...

  5. AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

    基于项目实战解析ng启动加载过程 前言 在AngularJS项目开发过程中,自己将遇到的问题进行了整理.回过头来总结一下angular的启动过程. 下面以实际项目为例进行简要讲解. 1.载入ng库 2 ...

  6. webdriver 启动chrome时加载配置

    Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法:  一.加载所有Chrome配置 用Chrom ...

  7. Windows机器配置启动加载器的高级选项后,机器出现蓝屏,无法RDP

    问题描述: 虚拟机重启后出现蓝屏,需要排查原因 蓝屏界面如下: 排查结果: 1.Console发现机器停留在上述蓝屏界面,按F8后,机器可以正常启动并成功连接:但通过console再次重启后,又会进入 ...

  8. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplication中的@EnableAutoConfiguration 2.EnableAuto ...

  9. JavaWeb 服务启动时,在后台启动加载一个线程

    JavaWeb 服务启动时,在后台启动加载一个线程. 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet. 下面对这两种方法做一简单的介绍, ...

随机推荐

  1. java父类子类代码

    import java.util.Scanner;import java.util.*; class PersonF{ public void print(String ID,String Workc ...

  2. Mac搭建appium环境

    1.安装brew 查看是否已经装上brew,终端输入命令:brew --version,已经装上的就不用再装了: 如果没有安装,终端输入命令:ruby -e "$(curl -fsSL ht ...

  3. React技术实践(1)

    随着系统越来越庞大,前端也变得越来越复杂,因此,构建一套组件化的前端变得很重要了. 之前一直在使用Asp.net来进行前端的组件化,Asp.net组件化有个很大的缺陷,就是和后台代码绑定太紧密了,不符 ...

  4. boot磁盘空间大于80警报

    WARNING=80SPACE_USED=`df |grep '^/dev/sda' |tr -s ' ' %|cut -d% -f5|sort -n|tail -n1`[ "$SPACE_ ...

  5. 初学WebGL引擎-BabylonJS:第8篇-阴影网格与活动

    [playground]-shadows(阴影) 源码 var createScene = function () { var scene = new BABYLON.Scene(engine); / ...

  6. vmware-workstation迁移虚拟机 15pro到12版本

    最近将测试的几台虚拟机进行了迁移,有几个点要注意,分享一下 1.环境介绍: 源服务器-ip-172.16.96.x 目标服务器-ip-172.16.96.x VMware版本-VMwareworkst ...

  7. [HGAME] Week1 Web WriteUp

    一 .Cosmos的博客 打开题目之后,首页直接给了我们提示: 版本管理工具常用的有git和svn两种,这里提示了GitHub,考虑Git信息泄露,先访问/.git/目录考虑用Githack获取泄露信 ...

  8. websocket劫持

    WebSockets who is WebSockets? WebSockets是一个能够给单TCP连接提供全双工信道的HTML5特性. 它的持续性连接功能,使得构建B/S模式的实时应用成为可能. W ...

  9. python:列表生成式和三元表达式、匿名函数

    一.列表生成式 1.列表生成式就是python内置的一种用来生成list的生成式. 比如下面这个例子: l=[] for i in range(10) list.append(i) 生成一个列表要用循 ...

  10. Python爬Boss,找工作,快人一步!!!

    通过职位搜索"Python开发",看下搜索的结果: https://www.zhipin.com/job_detail/?query=python开发&city=10102 ...