本文介绍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-acloud:nacos:config:# nacos的连接地址server-addr: localhost:8848# nacos config的dataId,如果不配置,默认读取application.nameprefix: examplenamespace: devfile-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:truespring:datasource:username: rootpassword: 123456url: jdbc:mysql://127.0.0.1:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTCtype: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverhikari:pool-name: StrasCouponHikariconnection-timeout: 5000idle-timeout: 30000maximum-pool-size: 10minimum-idle: 5max-lifetime: 60000auto-commit: true
保存即可。
6、测试
现在我们分别启动两个服务,并查看日志,如果正常连接了mysql,说明我们的配置成功了。当然前提是你必须有对应的数据库,并且用户名、密码正确。
第一个红框表示正常加载了jpa,第二个红框说订阅了我们刚才新增的配置。好了,就到这里吧,享受你的探险之旅吧。加油,架构师们。