eureka.instance.appname 与 spring.application.name 的区别

来源:互联网 发布:男生健身知乎 编辑:程序博客网 时间:2024/06/11 03:41

1,eureka.instance.appname

找到类 org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean.java,其中有段:

@Data@ConfigurationProperties("eureka.instance")public class EurekaInstanceConfigBean implements CloudEurekaInstanceConfig, EnvironmentAware {    private static final String UNKNOWN = "unknown";    /**     * Get the name of the application to be registered with eureka.     */    private String appname = UNKNOWN;

可以看到,应用名称 就是在这里配置的;

2,spring.application.name

找到类 org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean,其中片段:

    @Override    public void setEnvironment(Environment environment) {        this.environment = environment;        // set some defaults from the environment, but allow the defaults to use relaxed binding        RelaxedPropertyResolver springPropertyResolver = new RelaxedPropertyResolver(this.environment, "spring.application.");        String springAppName = springPropertyResolver.getProperty("name");        if(StringUtils.hasText(springAppName)) {            setAppname(springAppName);            setVirtualHostName(springAppName);            setSecureVirtualHostName(springAppName);        }    }

可以看到,这里是用 spring.application.name 配置的应用名称;

3,结论

从以上可以看到,spring.application.name 的优先级比 eureka.instance.appname 高,例如:

spring:  application:    name: jackeureka:  client:    serviceUrl:      defaultZone: http://localhost:8761/eureka/  instance:    appname: client

两者都配置的时候,注册到Eureka Server上的 appname 是 jack