本文介绍spring cloud集成nacos config的过程。
0、环境
- jdk 1.8
- maven 3.8.1
- Idea 2021.1
- nacos 2.0.3
1、项目结构
根项目nacos-config-sample下有两个module,这两个module分别是两个springboot项目,都从nacos中获取连接mysql的连接参数。我们开工。
2、添加nacos-config-sample依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
</parent>
<!--两个module,新增module时,idea会自动生成,手动加可以-->
<modules>
<module>service-a</module>
<module>service-b</module>
</modules>
<properties>
<nacos.config.version>2021.1</nacos.config.version>
<spring.bootstrap.version>3.0.1</spring.bootstrap.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${nacos.config.version}</version>
</dependency>
<!--用于读取bootstrap文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring.bootstrap.version}</version>
</dependency>
<!--jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
3、新增service-a
新增service-a,打卡pom.xml,看一下maven继承关系是否正取,代码如下:
<parent>
<artifactId>nacos-config-sample</artifactId>
<groupId>com.jackie.nacos.config.sample</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
如果继承关系没错,下来添加springboot启动类,代码如下:
@SpringBootApplication
public class ServiceaApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(ServiceaApplication.class, args);
String info = context.getEnvironment().getProperty("info");
System.out.println(info);
}
}
我在这里添加了测试代码。下面添加bootstrap.yml文件,内容如下:
spring:
application:
name: nacos-config-sample-service-a
cloud:
nacos:
config:
# nacos的连接地址
server-addr: localhost:8848
# nacos config的dataId,如果不配置,默认读取application.name
prefix: example
namespace: dev
file-extension: yml
再添加application.yml,内容如下:
server:
port: 9080
service-a搭建完成,要测试的话,大家可以先把根服务中的jpa依赖先注释掉,否则启动不起来。因为sping自动装配,会去找数据库连接池,再找mysql的连接信息。而此时我们还没配置呢。咱们放到最后再配置。
4、service-b搭建
sevice-b搭建过程与service-a基本类似,唯一不同的是,记得把服务端口改一下,其他保持一致即可。
#application.yml
server:
port: 9081
5、nacos config配置
登录nacos,进入配置管理,新增配置。Data ID:example.yml,Group: DEFAULT_GROUP,类型选择yml,配置内容按如下内容输入:
disableCouponRequest:true
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://127.0.0.1:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
pool-name: StrasCouponHikari
connection-timeout: 5000
idle-timeout: 30000
maximum-pool-size: 10
minimum-idle: 5
max-lifetime: 60000
auto-commit: true
保存即可。
6、测试
现在我们分别启动两个服务,并查看日志,如果正常连接了mysql,说明我们的配置成功了。当然前提是你必须有对应的数据库,并且用户名、密码正确。
第一个红框表示正常加载了jpa,第二个红框说订阅了我们刚才新增的配置。好了,就到这里吧,享受你的探险之旅吧。加油,架构师们。