概括
开发一个企业级微服务快速开发框架,服务注册和配置中心选择nacos,基于SpringBoot2.7.8版本接入,nacos服务端版本为2.2.2,nacos依赖版本为2021.0.4.0,不同版本运行的结果不同,所以实践之前一定注意版本,以下为详细的接入过程。
项目链接为:zpSmartEnterpriseFramework: 智能企业级开发框架,后续会持续更新其他功能
详细步骤
1.安装nacos服务端
下载地址:Releases · alibaba/nacos (github.com) (注意选择2.2.2版本,直接下载zip压缩包)
开启鉴权
修改conf/application.properties
###开启鉴权 nacos.core.auth.caching.enabled=true ### 配置用户名密码 nacos.core.auth.server.identity.key=nacos nacos.core.auth.server.identity.value=nacos ### 自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符 nacos.core.auth.plugin.nacos.token.secret.key=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=
放到服务器或者本地,命令单机启动
sh bin/startup.sh -m standalone .\bin\startup.cmd -m standalone
访问:默认ip:8848/nacos进入后台管理页面,账号密码按照上面设置的即可
增加配置:新建命名空间,对应命名空间增加配置,配置名为应用名(spring.application.name).yaml,编写对应内容
也可以不新建命名空间,把配置都放在public,不过还是建议给自己的应用建一个命名空间,配置不容易乱
2.引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
</parent>
<!-- nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${nacos.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${nacos.version}</version>
</dependency>
<!-- bootstrap配置,一定不要忘记这个依赖,负责无法读取bootstrap配置来指定配置空间,默认使用public命名空间的可以不引入 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud-bootstrap.version}</version>
</dependency>
<nacos.version>2021.0.1.0</nacos.version>
<spring-cloud-bootstrap.version>3.1.1</spring-cloud-bootstrap.version>
3.配置文件中新增nacos信息
两种配置文件均可,application.yaml+bootstrap.properties或者bootstrap.yaml+bootstrap.properties.具体地址和命名空间等信息按实际情况修改
如果指定命名空间,一定要加bootstrap.properties配置设置命名空间,注意配置的值是命名空间的ID,而不是名称,如果不显式设置命名空间会默认读取public命名空间
application.yaml
server:
port: 9300
spring:
application:
name: user-center
cloud:
nacos:
serverAddr: zp.com.cn:8848
username: nacos
password: nacos
discovery:
namespace: sef
config:
file-extension: yaml
config:
import:
- nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
bootstrap.properties
spring.cloud.nacos.config.namespace=sef spring.cloud.nacos.config.serverAddr=zp.com.cn:8848 spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos
bootstrap.yaml
server: port: 9300 spring: application: name: user-center cloud: nacos: serverAddr: zp.com.cn:8848 username: nacos password: nacos discovery: namespace: sef config: file-extension: yaml
其他功能
共享配置
几个应用一起使用一套配置,例如redis的配置,避免了重复配置
config下指定data-id和group
spring: cloud: nacos: serverAddr: zp.com.cn:8848 username: nacos password: nacos discovery: namespace: sef config: file-extension: yaml shared-configs: - data-id: common.yaml group: DEFAULT_GROUP
热更新
为了让配置自动更新生效,可以在启动类上添加@RefreshScope注解,或在具体需要刷新的Bean上使用该注解。
配置中心修改xxx,接口获取到的值也会对应更新
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
@RefreshScope
public class DemoController {
@Value("${xxx}")
private boolean xxx;
@RequestMapping("/get")
public boolean get() {
return xxx;
}
}
过程中遇到的问题
版本不适配
官方文档版本说明:版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com)
没有2.7.8版本SpringBoot说明,按照最接近的2.6.13的版本配置报错,慢慢试得出这套搭配
配置中心不能指定命名空间
新建bootstrap.properties指定
参考资料
nacos官方使用文档:Nacos 快速开始 | Nacos 官网
spring-cloud-alibaba官方使用文档:快速开始-阿里云Spring Cloud Alibaba官网 (aliyun.com)
1839

被折叠的 条评论
为什么被折叠?



