• Eureka源码解读


      Eureka是我接触分布式软件和服务的第一个框架,所以其原理和实现我的好好研究一下,Eureka可以参看这篇博文:http://springcloud.cn/view/29

      初学者会在教程中看到使用@EnableEurekaClient,下面看看这个注解干了啥事。

    @Order(2147483547)
    public class EnableDiscoveryClientImportSelector extends SpringFactoryImportSelector<EnableDiscoveryClient> {
        public EnableDiscoveryClientImportSelector() {
        }
    
        public String[] selectImports(AnnotationMetadata metadata) {
            String[] imports = super.selectImports(metadata);
            AnnotationAttributes attributes = AnnotationAttributes.fromMap(metadata.getAnnotationAttributes(this.getAnnotationClass().getName(), true));
    // 这个代码确实很难看,它是自动配置了哪些类呢?
         boolean
    autoRegister = attributes.getBoolean("autoRegister"); if (autoRegister) { List<String> importsList = new ArrayList(Arrays.asList(imports)); importsList.add("org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration"); imports = (String[])importsList.toArray(new String[0]); } else { Environment env = this.getEnvironment(); if (ConfigurableEnvironment.class.isInstance(env)) { ConfigurableEnvironment configEnv = (ConfigurableEnvironment)env; LinkedHashMap<String, Object> map = new LinkedHashMap(); map.put("spring.cloud.service-registry.auto-registration.enabled", false); MapPropertySource propertySource = new MapPropertySource("springCloudDiscoveryClient", map); configEnv.getPropertySources().addLast(propertySource); } } return imports; } protected boolean isEnabled() { return (Boolean)this.getEnvironment().getProperty("spring.cloud.discovery.enabled", Boolean.class, Boolean.TRUE); } protected boolean hasDefaultFactory() { return true; } }
  • 相关阅读:
    SDN原理 OpenFlow协议 -3
    SDN原理 OpenFlow协议 -2
    蓝桥杯----特殊的回文
    hdu-4513吉哥系列故事——完美队形II--最长回文
    蓝桥杯: 基础练习 十六进制转八进制
    母函数模板核心
    杭电ACM hdu 2079 选课时间 (模板)
    杭电ACM hdu 1398 Square Coins
    求用1g、2g、3g的砝码(每种砝码有无穷多个)称出10g的方案有几种
    有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?
  • 原文地址:https://www.cnblogs.com/Robin008/p/10348846.html
Copyright © 2020-2023  润新知