A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小江哥 黑马粉丝团   /  2018-10-18 11:36  /  1030 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

SpringBoot常用配置简介1. SpringBoot中几个常用的配置的简单介绍
  • 一个简单的Spring.factories
    [Java] 纯文本查看 复制代码
     # Bootstrap components[/align] org.springframework.cloud.bootstrap.BootstrapConfiguration=\
     org.springframework.cloud.config.server.bootstrap.ConfigServerBootstrapConfiguration
    
     # Application listeners
     org.springframework.context.ApplicationListener=\
     org.springframework.cloud.config.server.bootstrap.ConfigServerBootstrapApplicationListener      
     # Autoconfiguration
     org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
     org.springframework.cloud.config.server.config.EncryptionAutoConfiguration,\
     org.springframework.cloud.config.server.config.SingleEncryptorAutoConfiguration
  • BootstrapConfiguration简介
    Spring.factories中的配置项, org.springframework.cloud.bootstrap.BootstrapConfiguration,会在Spring启动之前的准备上下文阶段将其加入到容器中。我们在介绍 @Configuration配置解析一文中曾详细解释Configuration中的解析。BootstrapConfiguration是在刷新(refresh)阶段将class作为预选的配置类@Configuration注入到容器中的,在@Configuration配置解析阶段会解析此class。
  • 加载BootstrapConfiguration配置的类
  • [Java] 纯文本查看 复制代码
    List<String> names = SpringFactoriesLoader
                    .loadFactoryNames(BootstrapConfiguration.class, classLoader);
            for (String name : StringUtils.commaDelimitedListToStringArray(
                    environment.getProperty("spring.cloud.bootstrap.sources", ""))) {
                names.add(name);
            }
            // TODO: is it possible or sensible to share a ResourceLoader?
            SpringApplicationBuilder builder = new SpringApplicationBuilder()
                    .profiles(environment.getActiveProfiles()).bannerMode(Mode.OFF)
                    .environment(bootstrapEnvironment)
                    .properties("spring.application.name:" + configName)
                    .registerShutdownHook(false).logStartupInfo(false).web(false);
            List<Class<?>> sources = new ArrayList<>();
            for (String name : names) {
                Class<?> cls = ClassUtils.resolveClassName(name, null);
                try {
                    cls.getDeclaredAnnotations();
                }
                catch (Exception e) {
                    continue;
                }
                sources.add(cls);
            }
            builder.sources(sources.toArray(new Class[sources.size()]));
            AnnotationAwareOrderComparator.sort(sources);
            final ConfigurableApplicationContext context = builder.run();
  • 加载BootstrapConfiguration配置的类
  • [Java] 纯文本查看 复制代码
    private void prepareContext(ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Banner printedBanner) {
            context.setEnvironment(environment);
            postProcessApplicationContext(context);
            applyInitializers(context);
            listeners.contextPrepared(context);
            if (this.logStartupInfo) {
                logStartupInfo(context.getParent() == null);
                logStartupProfileInfo(context);
            }
        // Add boot specific singleton beans
            context.getBeanFactory().registerSingleton("springApplicationArguments",
                    applicationArguments);
            if (printedBanner != null) {
                context.getBeanFactory().registerSingleton("springBootBanner", printedBanner);
            }
    
            // Load the sources
            Set<Object> sources = getSources();//获取需要加载的class源
            Assert.notEmpty(sources, "Sources must not be empty");
            load(context, sources.toArray(new Object[sources.size()]));//加载class
            listeners.contextLoaded(context);
          }
  • ApplicationListener简介
    org.springframework.context.ApplicationListener会在SpringBoot中几个典型事件产生后调用onApplicationEvent方法。详见Spring事件发布系统
  • Autoconfiguration简介
    org.springframework.boot.autoconfigure.EnableAutoConfiguration是SpringBoot中最常见配置,用于自动配置。只要有@EnableAutoConfiguration注解,该配置的所有类都会自动加载到Spring容器中。

    没有智能的代码,源码面前了无秘密
转载:http://www.cnblogs.com/dragonfei ... utm_medium=referral

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马