1、配置中心service-config的pom核心依赖

                <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>


2、Application主应用的配置

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class SpringCloudConfigApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringCloudConfigApplication.class, args);
	}
}


3、application.yml文件的配置

server:
  port: 8005


eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}

spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:properties/ # 搜索src/main/resource 下的properties文件夹下的文件
  application:
    name: service-config
  profiles:
    active: native  # 配置使用本地储存


注意:这里properties下的文件命名格式为 客户端的spring.application.name 加上profile后缀

URL与配置文件的映射关系如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties


4、service-config-client-base中的配置

from=default-test123


5、启动后可以通过url按照上面的映射方式访问到对应的properties 



6、把配置信息应用到客户端中,这里创建了一个application name为service-config-client的项目,核心依赖

<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>


7、application中的代码

@RestController
@EnableDiscoveryClient  // 在注册中心发现服务
@SpringBootApplication
public class SpringCloudConfigClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringCloudConfigClientApplication.class, args);
	}

	@Value("${from}")  // 从对应的配置中心找到文件并把属性注入到value值中
	private String value;

	@RequestMapping("/hello")
	public String hello() {
		return "hello" + value;
	}
}

8、这里使用bootstrap.yml文件,该文件会先于application.yml被加载,spring-cloud相关的属性必须配置在bootstrap.properties中,因为config的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties。例如上面的defaultZone如果不配置,则找不到service-id,会导致启动失败。

server:
  port: 8006
spring:
  application:
    name: service-config-client
  cloud:
    config:
      discovery:
        enabled: true # 通过服务发现的方式去找配置中心
        service-id: service-config # 配置中心的名字,直接配置名称可以在配置中心集群的时候实现负载均衡
      profile: base # 对应配置中心文件的${profile}部分

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/
  instance:
    prefer-ip-address: true  # 使用ip地址注册到eureka server
    instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 在eureka server中看到的status显示为具体的ip地址和port



9、启动好服务,然后在注册中心看服务是否都已经成功注册到eureka server中,访问浏览器



代码:github

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐