本文介绍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,第二个红框说订阅了我们刚才新增的配置。好了,就到这里吧,享受你的探险之旅吧。加油,架构师们。