码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Boot 系统初始化器

时间:2020-02-06 15:01:50      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:vat   自定义   原理   容器   print   ping   throw   ddl   init   

1、Spring Boot 系统初始化器

系统初始化器介绍

SpringFactoriesLoader介绍

系统初始化器原理

总结

 

2、系统初始化器介绍

类名: ApplicationContextinitializer

介绍: Spring容量刷新之前执行的一个回调函数

作用: 向SpringBoot容器中注册属性

使用:继承接口自定义实现

 

 

3、系统初始化器实践

1)创建初始化器

在包initializer下创建FirstInitializer

/**
 *
 * 第一个系统初始化器
 */
@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");
        MapPropertySource mapPropertySource = new MapPropertySource("firstInitializer", map);
        environment.getPropertySources().addLast(mapPropertySource);
        System.out.println("run FirstInitializer");
    }
}

  

2) 创建spring.factories 

技术图片

 

 

内容为:

org.springframework.context.ApplicationContextInitializer=com.example.demo.initialize.FirstInitializer


3) 创建服务类 TestService 
@Component
public class TestService implements ApplicationContextAware
{

    private ApplicationContext applicationContext;



    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    public String test(){
        return  applicationContext.getEnvironment().getProperty("key1");
    }
}

  

4) 在Controller层增加方法

    @RequestMapping("/test")
    @ResponseBody
    public String test(){
        return  testService.test();
    }

  

5) 启动工程查看效果

可以发现打印了run FirstInitializer

技术图片

 

 然后调用接口。返回值为之前设置的value1

技术图片

 

Spring Boot 系统初始化器

标签:vat   自定义   原理   容器   print   ping   throw   ddl   init   

原文地址:https://www.cnblogs.com/linlf03/p/12267887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!