按照官网步骤安装:https://nacos.io/zh-cn/docs/quick-start.html 启动后输入“localhost:8848/nacos”跳转则成功
nacos默认是不开启安全验证的,这里修改nacos/conf/application.properties里nacos.core.auth.enabled=true 开启安全认证,默认为false 重启之后即提示输入密码 新建一个demo项目,例如结构如下 根目录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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.spring-cloud</groupId>
<artifactId>demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>user</module>
<module>commons</module>
<module>gateway</module>
<module>order</module>
</modules>
<properties>
<java.version>1.8</java.version>
<spring.cloud.alibaba.version>2.2.3.RELEASE</spring.cloud.alibaba.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<springboot.version>2.3.2.RELEASE</springboot.version>
<lombok.version>1.18.0</lombok.version>
</properties>
<!-- 配置dependencyManagement,子项目导入jar包则无需指定版本信息,方便jar包版本统一管理-->
<dependencyManagement>
<dependencies>
<!--springboot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--阿里巴巴下载仓库-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud下载仓库-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
自模块服务依赖,这里就拿gateway网关服务举列
<?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>demo</artifactId>
<groupId>com.spring-cloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.spring-cloud</groupId>
<artifactId>gateway</artifactId>
<dependencies>
<!--服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--(nacos统一配置中心管理依赖)-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--gateway依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--sentinel依赖-->
<!--<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>-->
</dependencies>
</project>
配置命名空间,命名空间就类似于开发环境,dev, test, prod等隔离
gateway的bootstrap.yml文件配置,bootstrap.yml比application.yml文件优先加载
spring:
application:
name: gateway-service
profiles:
active: dev
bootstrap-dev.yml文件配置
server:
port: 7666
tomcat:
uri-encoding: UTF-8
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: 3c24d765-74f9-49ee-a47e-f9a5f5e12a8d #不指定命名空间,默认在publid,最好与config配置的命名空间一致
config: #当配置有这个属性时,nacos控制台必须配置namespace,dataId等,不然启动后控制台不断打印错误
server-addr: ${spring.cloud.nacos.server-addr}
group: DEFAULT_GROUP #使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: gateway-service # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties
namespace: 3c24d765-74f9-49ee-a47e-f9a5f5e12a8d
username: nacos
password: nacos
gateway:
routes:
- id: user-service1 #路由的id,没有规定规则但要求唯一,建议配合服务名
uri: lb://user-service #服务名,实现负载均衡
predicates: #设置路由断言,,例如请求 http://localhost:7666/user/test/xx会转发到user-service服务对应的/user/test/xx
- Path=/user/test/**,/user/test2/** #指定路由规则
启动项目后就可以在配置中心看到启动的服务,这个dev就是刚刚创建的命名空间,并且在配置文件中配置了namespace属性 服务列表中也注册进来了,这个dev就是刚刚创建的命名空间,并且在配置文件中配置了namespace属性,如果没有配置namespace默认就是public 配置中心配置属性,DataId,Group属性在配置文件中以说明,然后点击发布 项目中动态获取
@RestController
@RequestMapping("/user/test")
public class UserTestController {
@Value("${user.age}")
private Integer age;
@Value("${user.name}")
private String name;
@GetMapping("/getStr")
public ResultData getStr(){
return ResultData.success(ResultCode.SUCCESS.getMessage(),name+age);
}
}
也能成功获取配置的属性
|