一.创建项目基本结构
本项目主要是构建一个简单的图书管理系统,基于springcloud alibaba这一套相关的技术和知识来搭建系统,整体的项目的骨架如下图所示:
如上图所示,结构很简单,包含了gateway,业务系统,客户端,后端管理系统等模块。本系统基于springcloud alibaba一套技术架构,大致的模块如下:
- library-clien 客户端系统
- library-common 公共模块,包含一些通用工具等
- library-gateway 网管系统
- library-op 后台管理系统
- library-service 业务系统
二.添加相关依赖
springcloud alibaba服务注册需要在父项目中添加以下依赖,注:完整项目可以参考本套项目源码,地址为:
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring.cloud.version>Hoxton.SR9</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在子模块library-gateway(其他需要注册到nacos中的服务也要添加这个依赖)中添加以下依赖,用于服务注册
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
</dependency>
三.服务注册
首先启动类上要加@SpringBootApplication和@EnableDiscoveryClient注解,@SpringBootApplication是springboot的核心注解,开启了自动配置等一系列功能,@EnableDiscoveryClient则是标记可以注册到注册中心,发现其他服务以及被其他服务发现。
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class LibraryGatewayApplication {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(LibraryGatewayApplication.class, args);
}
}
配置yml文件如下:
server:
port: 8888
spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST}:${NACOS_PORT}
config:
server-addr: ${NACOS_HOST}:${NACOS_PORT}
file-extension: yml
username: nacos
password: nacos
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/db_library?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
username: root
password: root
application:
name: library-gateway
注意,这里有几个占位符
N
A
C
O
S
H
O
S
T
,
{NACOS_HOST},
N
A
C
O
S
H
O
S
T
,
{NACOS_PORT},{MYSQL_HOST},${MYSQL_PORT},这几个参数放在环境变量中或者当作启动参数传进来即可。然后就可以启动服务了,服务启动完毕,可以查看nacos上注册的服务了,over