Spring Boot 系统初始化器

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

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

时间: 2024-11-09 05:19:37

Spring Boot 系统初始化器的相关文章

Spring Boot 系统初始化器是如何别调用的,以及实现原理

1.ApplicationContextInitializer的作用 上下文刷新即refresh方法前调用 用来编码设置一些属性变量通常用在web环境中 可以通过order接口进行排序 2.进入run方法 进入准备上下文prepareContext方法 进入applyInitializers方法.遍历所有的初始化器,并调用对应初始化器的initialize方法 getInitializers返回所有的初始化器. public Set<ApplicationContextInitializer<

一起学习springboot源码(系统初始化器)

一.介绍 在初始化过程中,会进行配置系统初始化器 1.类名:ApplicationContextInitializer 2.介绍:他是spring容器刷新之前执行的一个回调函数 3.作用:向springboot容器中注册属性 4.使用:继承接口自定义实现 系统初始化器是springboot框架预留的一个扩展点,通过它我们可以在springboot容器刷新之前来向我们的容器中来注册属性 二.实现一个自定义初始化器,直接上代码 自定义初始化器,实现ApplicationContextInitiali

Spring Boot之拦截器与过滤器(完整版)

作者:liuxiaopeng 链接:http://www.cnblogs.com/paddix 作者:蓝精灵lx原文:https://blog.csdn.net/liuxiao723846/article/details/80656492 参考以上两位作者文章链接进行实验整合,仅供学习交流 一.拦截器与过滤器 先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想. 在面向对象编程的过程中,我们很容易通过继承.多态来解决纵向扩展. 但是对于横向的功能,比如,在所有的service方法

spring boot 添加拦截器

构建一个spring boot项目. 添加拦截器需要添加一个configuration @Configuration @ComponentScan(basePackageClasses = Application.class, useDefaultFilters = true) public class ServletContextConfig extends WebMvcConfigurationSupport { 为了方便扫描位置,我们可以写一个接口或者入口类Application放置于最外

【第四十章】Spring Boot 自定义拦截器

1.首先编写拦截器代码 package com.sarnath.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service; import org.springframework.web.servlet.HandlerInterceptor; import

spring boot的初始化加载

1.CommandLineRunner在项目中经常需要进行初始化一些数据(比如缓存等),以便后面调用使用.spring boot可以通过CommandLineRunner接口实现启动加载功能. @Component @Order(1) //初始化加载优先级 数字越小优先级越高 public class Init implements CommandLineRunner { @Resource private IESignInitService eSignInitService; @Overrid

spring boot 配置拦截器验证使用 token 登录

1.自定义登录注解 package io.xiongdi.annotation; import java.lang.annotation.*; /** * @author wujiaxing * @date 2019-07-12 * 登录校验 */ @Target(ElementType.METHOD) @Documented @Retention(RetentionPolicy.RUNTIME) public @interface Login { } 2.创建 token 实体类 packag

Spring Boot 系统要求

Spring Boot 2.1.0.RELEASE 方需要 Java 8 or 9 的支持和 Spring Framework 5.1.2.RELEASE 以上的版本. 明确的构建工具的支持,请参考下面的构建工具: 构建工具 版本 Maven 3.3+ Gradle 4.4+ Servlet 容器 Spring Boot 支持下面的嵌入 servlet 容器: 名字 Servlet 版本 Tomcat 9.0 4.0 Jetty 9.4 3.1 Undertow 2.0 4.0 你也可以将 Sp

Spring Boot整合拦截器

过滤器和监听器都属于Servlet 的api,还可以使用 Spring 提供的拦截器(HandlerInterceptor)进行改更精细的控制. 原文地址:https://www.cnblogs.com/natian-ws/p/10823072.html