SpringBoot如何实现上下文初始器加载

这篇文章主要为大家展示了SpringBoot如何实现上下文初始器加载,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

化州网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联建站2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站

利用 Spring 工厂加载机制,实例化 ApplicationContextInitializer 实现类,并排序对象集合。

关键方法

private  Collection getSpringFactoriesInstances(Class type,
			Class<?>[] parameterTypes, Object... args) {
		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
		// Use names and ensure unique to protect against duplicates
		Set names = new LinkedHashSet<>(
				SpringFactoriesLoader.loadFactoryNames(type, classLoader));
		List instances = createSpringFactoriesInstances(type, parameterTypes,
				classLoader, args, names);
		AnnotationAwareOrderComparator.sort(instances);
		return instances;
}

技术实现步骤

  • 实现类: org.springframework.core.io.support.SpringFactoriesLoader
     
  • 配置资源: META-INF/spring.factories
  • 排序: AnnotationAwareOrderComparator#sort
     

自定义初始化器

编写类实现ApplicationContextInitializer接口

有两种指定顺序的方法,第一种:类上加注解@Order(Ordered.HIGHEST_PRECEDENCE),第二种则是实现Ordered接口

@Order(Ordered.HIGHEST_PRECEDENCE)
public class HelloWorldApplicationContextInitializer
    implements ApplicationContextInitializer {
  @Override
  public void initialize(C applicationContext) {
    System.out.println("ConfigurableApplicationContext.id = "+ applicationContext.getId());
  }
}
public class AfterHelloWorldApplicationContextInitializer implements ApplicationContextInitializer, Ordered {
  @Override
  public void initialize(ConfigurableApplicationContext applicationContext) {
    System.out.println("After application.id = " + applicationContext.getId());
  }
  @Override
  public int getOrder() {
    return Ordered.LOWEST_PRECEDENCE;
  }
}

在spring.properties中配置

# ApplicationContextInitializer
org.springframework.context.ApplicationContextInitializer=\
com.imooc.diveinspringboot.context.AfterHelloWorldApplicationContextInitializer,\
com.imooc.diveinspringboot.context.HelloWorldApplicationContextInitializer

以上就是关于SpringBoot如何实现上下文初始器加载的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。


网页标题:SpringBoot如何实现上下文初始器加载
链接地址:http://bzwzjz.com/article/ggsggs.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 企业网站设计 网站设计制作 网站建设推广 成都网站设计 成都营销网站制作 网站建设 四川成都网站制作 成都网站建设公司 高端网站建设 专业网站设计 定制网站制作 响应式网站设计 高端定制网站设计 成都网站制作 重庆网站建设 成都网站建设公司 成都定制网站建设 成都网站制作 成都网站制作 成都网站建设 网站设计 攀枝花网站设计