第1章 spring-cloud-alibaba环境搭建-版本关系(1)
------------------------------------------------------------------------------------------------------------------
项目pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spring-cloud-demo</artifactId>
<groupId>org.chy</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacos-config</artifactId>
<name>nacos-config</name>
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 启动获取配置中心配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
<build>
</build>
</project>
bootstrap.yml
# nacos 的配置必须写到 bootstrap.yml 里面,否则更新配置的时候获取不到配置信息
# ${prefix}-${spring.profiles.active}.${file-extension}
spring:
application:
name: nacos-config
profiles:
active: public
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
prefix: ${spring.application.name}
file-extension: properties
nacos配置文件名称拼接格式:${prefix}-${spring.profiles.active}.${file-extension}
nacos配置文件名称拼接结果:nacos-config-public.properties
application.yml
server:
port: 8080
程序用例
package org.chy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class NacosConfigApp
{
public static void main( String[] args )
{
SpringApplication.run(NacosConfigApp.class, args);
}
}
AppConfig配置类
package org.chy.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
@Configuration
@RefreshScope
public class AppConfig {
@Value(value = "${appName:default}")
public String appName;
@Value(value = "${appVersion:default}")
public String appVersion;
@Value(value = "${changed:false}")
public boolean changed;
@Value(value = "${count:100}")
public int count;
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("AppConfig{");
sb.append("appName='").append(appName).append('\'');
sb.append(", appVersion='").append(appVersion).append('\'');
sb.append(", changed=").append(changed);
sb.append(", count=").append(count);
sb.append('}');
return sb.toString();
}
}
@RefreshScope:启用自动刷新配置
ProviderController类
package org.chy.controller;
import org.chy.config.AppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
@RefreshScope
public class ProviderController {
@Autowired
AppConfig appConfig;
@Value("${appName:test}")
public String appName;
@GetMapping(value = "/getNacosConfig")
public String getNacosConfig() {
return appConfig.toString();
}
@GetMapping(value = "/getAppName")
public String getAppName() {
return appName;
}
}
nacos配置中心
测试结果
更新配置
count=999