1. 程式人生 > >eureka.instance.appname 與 spring.application.name 的區別

eureka.instance.appname 與 spring.application.name 的區別

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: jack
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    appname: client

兩者都配置的時候,註冊到Eureka Server上的 appname 是 jack