SpringBoot自定义系统初始化器

方式一
@Order(1)//:代表执行的顺序
public class FirstInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>{
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ConfigurableEnvironment environment = applicationContext.getEnvironment();//获取环境
        //自定义属性
        Map<String, Object> map = new HashMap<>();
        map.put("key1", "value1");
        //放入系统属性 属性集名称map
        MapPropertySource mapPropertySource = new MapPropertySource("firstInitializer", map);
        //获取所有属性中的属性集,将他加入进去
        environment.getPropertySources().addLast(mapPropertySource);
        System.out.println("run firstInitializer");

    }
}


SpringBoot自定义系统初始化器_第1张图片

方式二(使用硬编码方式)
@Order(2)
public class SecondInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>{


    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ConfigurableEnvironment environment = applicationContext.getEnvironment();//获取环境
        //自定义属性
        Map<String, Object> map = new HashMap<>();
        map.put("key2","value2" );
        //将自定义属性放入系统属性
        MapPropertySource secontInitializer = new MapPropertySource("secontInitializer", map);
        //获取系统中个所有的属性集,将自定义属性集放入系统属性集中
        environment.getPropertySources().addLast(secontInitializer);
        System.out.println("系统初始化器第二种方式执行了!");

    }
}

SpringBoot自定义系统初始化器_第2张图片

方式三
@Order(3)
public class ThirdInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>{


    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ConfigurableEnvironment environment = applicationContext.getEnvironment();//获取环境
        //自定义属性
        Map<String, Object> map = new HashMap<>();
        map.put("key3","value3" );
        //将自定义属性放入系统属性
        MapPropertySource thirdInitializer = new MapPropertySource("thirdInitializer", map);
        //获取系统中个所有的属性集,将自定义属性集放入系统属性集中
        environment.getPropertySources().addLast(thirdInitializer);
        System.out.println("系统初始化器第三种方式执行了!");

    }
}

SpringBoot自定义系统初始化器_第3张图片

运行结果如下

SpringBoot自定义系统初始化器_第4张图片

结论

application.properties配置优先执行

你可能感兴趣的:(java)