springBoot系统初始化器实现(方式二)

实现初始化器的方式二:
SpringApplication初始化完毕后手动添加
新建一个springBoot项目:

[往期文章:怎么新建一个springBoot项目] https://www.jianshu.com/p/18f5bd189ced

新建SecondInitializer.java:
新建SecondInitializer.java.png
新建TestService.java
新建TestService.java.png
新建controller方法:
新建controller方法.png
修改项目启动方式:
修改项目启动方式
浏览器访问获取初始化器配置信息:
浏览器访问获取初始化器配置信息
SecondInitializer.java源码:
package com.xy.initializer;

import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;

import java.util.HashMap;
import java.util.Map;

@Order(2)
public class SecondInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        ConfigurableEnvironment environment =applicationContext.getEnvironment();
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("xy2","my name is SecondInitializer!");
        MapPropertySource mapPropertySource = new MapPropertySource("secondInitializer",map);
        environment.getPropertySources().addLast(mapPropertySource);
        System.out.println("Run SecondInitializer");
    }
}

TestService.java源码:
package com.xy.service;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class TestService implements ApplicationContextAware {
    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("test setApplicationContext......");
        this.applicationContext = applicationContext;
    }

    public String test(){
        System.out.println(applicationContext.getBean(DemoService.class));
        DemoService t = applicationContext.getBean(DemoService.class);
        return applicationContext.getEnvironment().getProperty("xy2");
    }
}

如果对您有帮助,请记得点个赞哦
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容