.net程序员网站开发工程师,公司的网站建设规划书,好的模板网站建设,aspnet东莞网站建设前置说明-安装环境#xff1a;
java: 1.8
maven: 3.9.9
开发工具#xff1a;IntelliJ IDEA 2022.2.3 【以下简称idea】
如果cmd命令行输入以下命令查看到有相应输出则表示环境已安装 第一步#xff1a;从无到有搭建spring boot2.7.18#xff0c;并引入spring cloud
方…
前置说明-安装环境
java: 1.8
maven: 3.9.9
开发工具IntelliJ IDEA 2022.2.3 【以下简称idea】
如果cmd命令行输入以下命令查看到有相应输出则表示环境已安装 第一步从无到有搭建spring boot2.7.18并引入spring cloud
方法一使用 Spring Initializr 初始化项目
Spring Initializr 是一个在线工具可帮助你快速生成 Spring Boot 项目的基本结构 步骤 1访问 Spring Initializr 网站
打开浏览器访问 https://start.spring.io/。
步骤 2配置项目信息
在该页面上按照以下要求进行配置 Project选择 Maven Project 或 Gradle Project这里以 Maven Project 为例。 Language选择 Java。 Spring Boot输入 版本号。 Group通常是公司或组织的域名倒序例如 com.example。 Artifact项目的唯一标识符例如 demo。 Name项目名称默认与 Artifact 相同。 Description项目描述可以简单说明项目的用途。 Package name默认根据 Group 和 Artifact 生成例如 com.example.demo。 Packaging选择 Jar。 Java选择合适的 Java 版本 由于该网站选不到Spring boot2.7.18版本我将选择用idea搭建一个空的项目进行配置当然如果非要使用网站生产也可以下载后解压文件修改对应的版本号即可使用
方法二使用idea创建空项目
步骤 1打开idea选择左上角File-New-Project 步骤 2步骤一点完后会出现如图所属弹窗按弹窗内容选择填写即可完成空项目的搭建 项目结构说明 步骤 3配置 pom.xml 文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.cxm/groupIdartifactIdspring-cloud-nacos/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.18/versionrelativePath//parentpropertiesjava.version1.8/java.versionmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies
/project更新Maven依赖 步骤 4创建主应用类Main可以删掉 代码如下
package org.cxm;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringCloudApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudApplication.class,args);}
}步骤 5创建控制器类
为了方便管理一般会将每个分支进行文件汇总如下添加Controller控制层文件夹所有的控制层文件都放在此文件夹内 新增控制器类TestController,并添加代码如下 package org.cxm.Controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
RequestMapping(/test)
public class TestController {GetMapping(get)public String get() {return 我的第一个项目;}}步骤 6运行idea,启动项目 启动后浏览器访问IP:端口【端口默认8080】即可看到控制器类的代码 至此Spring boot2.7.18并引入Spring cloud完成
第二步集成spring cloud nacos
Nacos 可以作为服务注册与发现中心以及配置中心使用下面从添加依赖、配置 Nacos、服务注册与发现、配置管理等方面展开说明。
1、启动 Nacos 服务
首先要确保 Nacos 服务已启动你可以从 Nacos 官方 GitHub 仓库 下载 Nacos 服务端下载地址【发布历史 | Nacos 官网 】点击对应版本号即可下载解压后在命令行中执行以下命令启动
Linux下进入到bin目录下执行如下命令lunix如果开了防火墙的话需开放两个端口88489848【9848 端口在 Nacos 集群模式下该端口用于 Nacos 节点之间的 gRPC 通信主要负责数据同步、心跳检测等操作以此保证集群中各个节点的数据一致性。】# Linux/Unix/Mac
sh startup.sh -m standaloneWindows下进入bin目录下cmd执行如下命令或者编辑startup.cmd文件找到set MODE将内容改为set MODEstandalone保存后双击点击startup.cmd即可完成nacos服务端启动# Windows
cmd startup.cmd -m standalone启动完成后浏览器打开链接即可看到nacos服务端: http://localhost:8848/nacos/index.html 补充使用源码进行启动-编译-打包如需对nacos进行定制开发可以使用源码修改
2、集成nacos,添加依赖如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.cxm/groupIdartifactIdspring-cloud-nacos/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.18/versionrelativePath//parentpropertiesjava.version1.8/java.versionmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencyManagementdependencies!-- spring-cloud相关依赖 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope/dependency!-- spring-cloud-alibaba 相关依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.5.0/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencies!-- 测试依赖 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency!-- Spring Cloud Nacos Discovery 依赖 用于服务注册与发现--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- Spring Cloud Nacos Config 依赖 用于配置配置中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!-- spring-cloud-starter-bootstrap 解析bootstrap.yml文件 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency/dependencies
/project3、配置 Nacos 地址
如图所示添加如下两个配置文件 application.yml 添加配置如下
server:port: 8081 # 指定服务端口如果不指定默认就是8080spring:application:name: springCloudNacos # 指定服务名称项目启动后注册到nacos的名称就是这个bootstrap.yml 添加配置如下,用于测试nacos配置自动刷新
spring:application:name: springCloudNacoscloud:nacos:#服务注册与发现discovery:server-addr: http://127.0.0.1:8848group: DEFAULT_GROUP #默认分组
# username: #nacos用户名
# password: #nacos密码#服务配置中心config:server-addr: http://127.0.0.1:8848 # Nacos服务端地址group: DEFAULT_GROUP #默认分组file-extension: yml #配置文件后缀名refresh-enabled: true #开启自动刷新配置
# prefix: #配置文件前缀
# username: #nacos用户名
# password: #nacos密码#下面配置用于测试nacos的配置自动刷新内容获取
common:username: cxmage: 18启动类修改如下
package org.cxm;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;SpringBootApplication
EnableDiscoveryClient //nacos服务注册与发现
public class SpringCloudApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudApplication.class,args);}
}
修改TestController 文件如下
package org.cxm.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;RestController
RequestMapping(/test)
RefreshScope //主要用于支持配置的动态刷新
public class TestController {Value(${common.username})private String username;Value(${common.age})private Integer age;GetMapping(/get)public String get() {return 我的第一个项目;}GetMapping(/getMap)public MapString, Object getMap() {MapString, Object map new HashMap();map.put(username, username);map.put(age, age);return map;}
}
启动服务测试
服务启动后可看到日志打出来的配置信息名称和分组 进入nacos系统可以看到服务已经注册进来了 浏览器访问刚刚控制层写的接口可以看到bootstrap.yml配置的信息被获取到了 4、配置管理
在配置管理 - 配置列表中创建一个新的配置
Data ID 为 springCloudNacos.ymlData ID 默认规则为 ${spring.application.name}.${spring.cloud.nacos.config.file-extension}配置内容如下 再次刷新刚才接口可看到输出的内容已从nacos配置中获取如果继续修改nacos配置文件则获取的信息还会立马更新 至此集成spring cloud nacos已经完成
第三步集成spring cloud gateway网关服务
集成 Spring Cloud Gateway实现路由转发等功能。整个集成过程主要包括创建项目、添加依赖、配置路由规则、测试等步骤。
1、按照第一步的方法创建一个空项目为spring-cloud-gateway
2、添加pom依赖如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.cxm/groupIdartifactIdspring-cloud-gateway/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.18/versionrelativePath//parentpropertiesjava.version1.8/java.versionmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencyManagementdependencies!-- spring-cloud相关依赖 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.5/versiontypepom/typescopeimport/scope/dependency!-- spring-cloud-alibaba 相关依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.0.5.0/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencies!-- 测试依赖 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency!-- Spring Cloud Nacos Discovery 依赖 用于服务注册与发现--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- Spring Cloud Nacos Config 依赖 用于配置配置中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!-- spring-cloud-starter-bootstrap 解析bootstrap.yml文件 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency!-- Spring Cloud Gateway网关实现路由转发等 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!-- spring-cloud-starter-loadbalancer 负载均衡组件 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependencies
/project3、创建启动类代码如下删除Main类 package org.cxm;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}
4、创建yml配置文件 application.yml内容如下
server:port: 8080
spring:application:name: SpringCloudGatewaybootstrap.yml内容如下
spring:application:name: SpringCloudGatewaycloud:nacos:#服务注册与发现discovery:server-addr: http://127.0.0.1:8848group: DEFAULT_GROUP #默认分组# username: #nacos用户名# password: #nacos密码#服务配置中心config:server-addr: http://127.0.0.1:8848 # Nacos服务端地址group: DEFAULT_GROUP #默认分组file-extension: yml #配置文件后缀名refresh-enabled: true #开启自动刷新配置# prefix: #配置文件前缀# username: #nacos用户名# password: #nacos密码gateway:discovery:locator:enabled: true #开启服务发现路由功能这样 Spring Cloud Gateway 就能依据服务注册中心这里是 Nacos里的服务信息自动创建路由规则routes:- id: springCloudNacos #路由的唯一标识一般用${spring.application.name}uri: lb://springCloudNacos #目标服务地址lb://springCloudNacos 里的 lb 代表负载均衡springCloudNacos 是在 Nacos 注册的服务名意味着请求会被路由到名为 springCloudNacos 的服务predicates:- Path/test/** #路由断言也就是路由匹配规则。Path/test/** 表明当请求路径以 /test/ 开头时该路由规则就会生效启动SpringCloudGateway服务进入nacos服务端可以看到网关服务已被注册上去了 5、创建网关配置 6、测试之前的接口请求
Spring Cloud Nacos的接口请求 Spring Cloud Gateway进行接口转发到Spring Cloud Nacos 至此集成Spring Cloud Gateway完成
补充给nacos设置用户名密码
1、创建nacos数据库
Nacos 2.x 版本使用数据库来存储用户信息你需要创建相应的数据库表。以 MySQL 为例执行 conf/mysql-schema.sql 脚本该脚本会创建 users、roles、permissions 等表
插入一个用户名nacos密码Nacos2025!#$
INSERT INTO users
(username, password, enabled)
VALUES(nacos, $2a$10$Jsv69Thm1TtuMnVjnAxufu9EW5YNM6NpELOTrfTmQ2PndGZ4RdxWe, 1);使用如下代码获取 BCrypt 加密后的密码
public static void main(String[] args) {BCryptPasswordEncoder encoder new BCryptPasswordEncoder();String rawPassword Nacos2025!#$;String encodedPassword encoder.encode(rawPassword);System.out.println(encodedPassword);}2、配置nacos服务端配置信息
在 conf/application.properties 文件中配置数据库连接信息
#请根据实际情况修改数据库连接 URL、用户名和密码。
spring.datasource.platformmysql
db.num1
db.url.0jdbc:mysql://172.16.132.252:3306/nacos?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicodetrueuseSSLfalseserverTimezoneAsia/Shanghai
db.user.0root
db.password.0GHzgsw2024# 开启身份验证
nacos.core.auth.enabledtrue
# 指定了服务器身份标识的键。这个键用于标识服务器身份信息的名称
nacos.core.auth.server.identity.keynacos
# 指定了服务器身份标识的值。客户端在与 Nacos 服务器进行通信时可以使用这些信息来验证服务器的身份。
nacos.core.auth.server.identity.valueNacos2025!#$
### The default token (Base64 String):原始密钥nacos_2025250_szhsyb_nacos_token
nacos.core.auth.plugin.nacos.token.secret.keybmFjb3NfMjAyNTI1MF9zemhzeWJfbmFjb3NfdG9rZW4【nacos.core.auth.plugin.nacos.token.secret.key】 配置说明
在 Nacos 配置中nacos.core.auth.plugin.nacos.token.secret.key 是用于生成和验证 Nacos 认证令牌Token的密钥。当你开启了 Nacos 的身份验证功能通过设置 nacos.core.auth.enabledtrue后Nacos 会使用这个密钥对用户登录、服务调用等操作生成的 Token 进行加密和解密以此来保证认证信息的安全性和完整性
注意事项
1、安全性这个密钥非常关键因为它关系到 Token 的加密和解密。在生产环境中要妥善保管这个密钥避免泄露。建议使用足够复杂且随机的字符串作为密钥以增强安全性。
2、长度要求虽然没有严格固定的长度限制但为了保证加密的强度建议使用较长的字符串。一般来说至少 32 位及以上的随机字符串是比较合适的。
3、Base64 编码配置时可以直接使用 Base64 编码后的字符串Nacos 会自动进行解码处理。如果你想修改密钥生成新的密钥后需要进行 Base64 编码再配置到文件中。
4、以下是使用 Java 代码生成随机字符串并进行 Base64 编码的示例public static void main(String[] args) {String rawKey nacos_2025250_szhsyb_nacos_token;// 进行 Base64 编码String encodedKey Base64.getEncoder().encodeToString(rawKey.getBytes(StandardCharsets.UTF_8));System.out.println(Encoded Key: encodedKey);}3、 以上配置完成重启nacos服务即可 用户名nacos
密码Nacos2025!#$后续修改密码可以直接在nacos服务上修改