码迷,mamicode.com
首页 > 其他好文 > 详细

Eureka源码解读

时间:2019-02-02 19:13:02      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:attr   hash   http   sele   cli   factory   getenv   ISE   ann   

  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; } }

 

Eureka源码解读

标签:attr   hash   http   sele   cli   factory   getenv   ISE   ann   

原文地址:https://www.cnblogs.com/Robin008/p/10348846.html

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