网站首页 > 博客文章 正文
大家好,最近公司新项目采用SpingCloud全家桶进行开发,原先对SpringCloud仅仅只是停留在了解的初级层面,此次借助新项目的契机可以深入实践下SpringCloud,甚是Happy。大学毕业刚入职的时候就有想写技术文章的想法,蹉跎蹉跎都那么些年过去了,期间所遇到的问题都图方便随手保存在了有道云笔记这个狭小的空间中,记了这么多也要见见光了,后续有机会都迁移出来,大家互相学习,提升技术,修炼内功。话不多说,那我们现在就开始SpringCloud之旅吧!
项目版本
spring-boot-version:2.2.5.RELEASE
spring-cloud.version:Hoxton.SR3
ConfigServer服务端
先构建SpringCloud Config服务端 打开https://start.spring.io/ 勾选Config Server,下载导入IDE即可
部分pom信息
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
application.properties
# 应用服务名称
spring.application.name=config-server
# 应用服务端口号
server.port=9001
# Git远程库检索相对地址
spring.cloud.config.server.git.search-paths=/springCloudAProject/**
# Git远程库http访问项目地址
spring.cloud.config.server.git.uri=https://github.com/niuniu9631/SpringCloudConfig
# Git远程库http访问验证用户名
spring.cloud.config.server.git.username=自己Git账号
# Git远程库http访问验证密码
spring.cloud.config.server.git.password=自己Git账号密码
ConfigServerApplication.java
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
至此服务端相关代码配置都已OK,让我们一起Run起来吧。 通过浏览器访问下服务,http://localhost:9001/
因未对外开放任何访问接口,所以出现404就是对的啦,只要项目没有启动出错就说明配置这块没啥问题了,不放心当然可以构建个客户端访问拉取下数据。这边我提供下我这边发现的一个小技巧,启动没报错后,可去系统的临时文件查看是否有新建的以config-repo-xxxxx开头的目录,有的话说明服务端Git配置这块没有问题。
Windows默认临时目录:C:\Users\wyb\AppData\Local\Temp
Linux默认临时目录:/tmp 该配置项可根据该配置项进行调整
spring.cloud.config.server.git.basedir=指定目录
我这边未配置指定目录,临时目录文件如下
ConfigClient客户端
还是老样子,打开https://start.spring.io/, 勾选Config Client,Spring Web,下载导入IDE即可。
部分pom信息
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
application.properties
# 客户端服务应用名称
spring.application.name=config-client
# 客户端端口号
server.port=9002
bootstrap.properties
# 应用服务名称
spring.cloud.config.name=config-client
# 对应git上分支名称
spring.cloud.config.label=master
# 对应配置文件上profiles参数项
spring.cloud.config.profile=dev
# 配置服务端请求地址
spring.cloud.config.uri=http://localhost:9001/
ConfigClientApplication.java
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
ConfigClientWebController.java 用于访问配置项进行验证
@RestController
public class ConfigClientWebController {
@Value("${app.env.name}")
private String appEnvName;
@RequestMapping("/getEnv")
public String getEnv() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+",envName:"+appEnvName;
}
}
至此客户端相关代码配置都已OK,让我们一起Run起来吧。 通过浏览器访问下服务,http://localhost:9002/getEnv
成功获取到Git远程仓库中的配置项信息。远程仓库目录如下图
注意事项
到此为止,已基本完成配置中心服务端和客户端的构建及配置,接下来说下本人在构建搭建过程中遇到的问题。
问题1:spring.cloud.config.server.git.search-paths配置问题 刚开始我这边该配置参数如下
spring.cloud.config.server.git.search-paths=/springCloudAProject/**
Config Server端启动正常,Config Client端启动报如下错误
java.lang.IllegalArgumentException: Could not resolve placeholder
后来自己折腾来折腾去,渐渐发现了问题所在,原来这个/** 存在一定的对应关系,不能乱用,调整目录结构后正常访问了
问题2 公司项目Git采用阿里云Code进行管理,服务端配置后老是提示没有权限访问 排查了下项目权限也是master,账号和密码都是对的,怎么会没有权限访问呢。折腾了许久都没有进展,后来查看Spring Cloud Config 配置项得知还可以配置SSH访问,那就试试吧,调整服务端配置如下
spring.cloud.config.server.git.uri = git@code.aliyun.com:XXX/XProjectConfig.git
spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.private-key=XXX
在这里也遇到了另外一个问题,网上该配置都是基于yml配置的,心想应该都兼容的吧,将私钥复制过来,发现不对貌似都不能正常识别该配置,后通过百度得知如下 私钥开头和结尾前一行需要\n,中间行需要 \ 连接;要保证秘钥内容是绿色有效值文本 具体如下
spring.cloud.config.server.git.private-key=-----BEGIN RSA PRIVATE KEY-----\n\
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\
XXXXXXXXXXXXXXXXXXXXXXXXX\
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\
XXXXXXXXXXXXXXXXXXXXXXX\n\
-----END RSA PRIVATE KEY-----
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
猜你喜欢
- 2024-09-26 Gabe Newell透露Valve有多款游戏正在开发中
- 2024-09-26 橙装坏运气保护软上限移除!(24%的法律保护上限是什么时候开始的)
- 2024-09-26 从 Java 8 升级到 Java 17 全过程,贼特么坑
- 2024-09-26 Spring Cloud Gateway夺命连环10问?
- 2024-09-26 Jenkins Pipelines将制品发布到Nexus存储库
- 2024-09-26 Spring Boot中的事务是如何实现的?懂吗?
- 2024-09-26 JedisPool资源池优化(资源池pod是什么意思)
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)