注册服务到nacos
# 前言
在上一篇基于docker-compose部署微服务基本环境 (opens new window),我们完成的基础服务的搭建,接下来就开始本地创建一些服务,将其注册到服务注册中心中。
# 部署步骤
这里我们就用用户、产品、订单这三个常见场景作为示例,通过用户购买产品生成订单这种场景开始简单的模块创建。
本篇文章主要完成项目基础架子的搭建并注册到服务注册中心,所以关于具体业务的代码会在后续文章中补充。
# 建表
完成数据库创建之后,我们首先创建用户、产品、订单三张数据表。
SET FOREIGN_KEY_CHECKS=0;
-- 避免myabtis-plus报错,order表用t_开头
DROP TABLE IF EXISTS `t_order`;
CREATE TABLE `t_order` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ORDER_NO` varchar(255) DEFAULT NULL,
`ACCOUNT_CODE` varchar(255) DEFAULT NULL,
`PRODUCT_CODE` varchar(255) DEFAULT NULL,
`COUNT` int(11) DEFAULT '0',
`AMOUNT` decimal(10,2) DEFAULT '0.00',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`PRODUCT_CODE` varchar(255) DEFAULT NULL COMMENT '编码',
`PRODUCT_NAME` varchar(255) DEFAULT NULL COMMENT '名称',
`COUNT` int(11) DEFAULT '0' COMMENT '库存数量',
`PRICE` decimal(10,2) DEFAULT '0.00' COMMENT '单价',
PRIMARY KEY (`ID`),
UNIQUE KEY `UK_PRODUCT_CODE` (`PRODUCT_CODE`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
INSERT INTO `product`VALUES ('1', 'P001', '笔记本', '10', '3000.00');
INSERT INTO `product`VALUES ('2', 'P002', '手表', '5', '250.00');
INSERT INTO `product`VALUES ('3', 'P003', '键盘', '50', '100.00');
INSERT INTO `product`VALUES ('4', 'P004', '辣条', '1000', '0.50');
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ACCOUNT_CODE` varchar(255) DEFAULT NULL,
`ACCOUNT_NAME` varchar(255) DEFAULT NULL,
`AMOUNT` decimal(10,2) DEFAULT '0.00',
PRIMARY KEY (`ID`),
UNIQUE KEY `UK_ACCOUNT_CODE` (`ACCOUNT_CODE`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO `account`VALUES ('1', 'zsy', '鲨鱼辣椒', '10000.00');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 创建项目基础结构
完成后创建如下图所示的项目模块。

# 父模块引入所有需要的依赖
对应的依赖和注释笔者都已补充说明,读者可自行参阅。
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.1.9.RELEASE</spring-boot.version>
<springcloud-alibaba.version>0.9.0.RELEASE</springcloud-alibaba.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version>
<freemarker.version>2.3.28</freemarker.version>
<mysql.version>5.1.47</mysql.version>
<encoding>UTF-8</encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--database-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--代码生成需要引入mybatis-plus相关依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus-generator.version}</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
<!--springcloud依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${springcloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--swagger文档-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.18</version>
</dependency>
</dependencies>
</dependencyManagement>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 配置代码生成器
为了避免编写一些没有必要的代码,我们这里就需要通过generator生成controller、service、mapper代码。
首先我们需要在pom中引入代码生成要用到的依赖
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!--database-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
完成后我们需要编写CodeAutoGenerator ,编写代码生成逻辑,如下所示,这就是笔者生成order表时的代码
/**
* mp 代码生成器
*/
public class CodeAutoGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://xxxxxx:3306/cloud_alibaba", "root", "密码")
.globalConfig(builder -> {
builder.author("zsy") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D:\\googleDownload\\cloud-alibaba\\order-biz\\src\\main\\java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.zsy") // 设置父包名
.moduleName("order") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\googleDownload\\cloud-alibaba\\order-biz\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("order") // 设置需要生成的表名
.addTablePrefix("t_", "c_").controllerBuilder(); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 尝试生成account表的业务代码
完成上述操作的操作之后,直接运行CodeAutoGenerator,完成代码生成,如下图所示:

# 修改配置文件,尝试启动,查看注册中心是否生效
我们继续编写启动类:
@SpringBootApplication
@EnableDiscoveryClient
public class AccountServiceApplication {
public static void main(String[] args) {
SpringApplication.run(AccountServiceApplication.class, args);
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
配置yml,指定应用端口号,数据库连接信息,mybatis映射关系
server:
port: 9000
spring:
application:
name: account-service
cloud:
nacos:
discovery:
server-addr: ip:8848/
datasource:
url: jdbc:mysql://ip:3306/cloud_alibaba
username: 用户
password: 密码
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations : classpath:/mapper/**/*.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
完成后,我们编写一下controller的测试代码
@RestController
@RequestMapping("/account/account")
public class AccountController {
@Autowired
private IAccountService accountService;
@RequestMapping("/getById")
public Account getById(){
return accountService.getById("1");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
尝试启动项目,查看是否注册到注册中心,并测试接口:
可以看到,服务注册成功

尝试使用RestfulToolkit 测试刚刚的接口(如果没有安装的读者可自行去下载该IDEA插件),可以看到接口调式通了

# 完成后续代码生成和编写
我们按照上述步骤完成代码生成,并注册到nacos,最终效果如下

# 参考文献
编辑 (opens new window)
上次更新: 2026/03/26, 01:05:31