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