基于 Spring Cloud+Spring Boot+Nacos+Dubbo+mybatis plus+RocketMQ+Sentinel+Seata+mysql 搭建一个项目手脚架
时间: 2023-09-11 08:06:33 浏览: 200
首先,你需要确保已经安装了以下的软件和工具:
- JDK 8及以上版本
- Maven 3.3及以上版本
- MySQL 5.7及以上版本
- Nacos 1.4.1及以上版本
- Dubbo 2.7.8及以上版本
- RocketMQ 4.8.0及以上版本
- Sentinel 1.8.2及以上版本
- Seata 1.4.2及以上版本
接下来,我们按照以下步骤来搭建项目手脚架:
1. 创建一个Spring Boot项目,并添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-dependencies-nacos</artifactId>
<version>2.7.8</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
```
其中,`${rocketmq.version}`和`${mybatis-plus.version}`需要替换为实际的版本号。
2. 添加Nacos配置
在`application.yml`文件中添加以下配置:
```yaml
spring:
application:
name: project-name
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
discovery:
server-addr: localhost:8848
metadata:
app-version: 1.0.0
```
其中,`server-addr`需要替换为Nacos的实际地址。
3. 配置Dubbo
在`application.yml`文件中添加以下配置:
```yaml
dubbo:
application:
name: project-name
registry:
address: nacos://localhost:8848
protocol:
name: dubbo
port: 20880
scan:
base-packages: com.example.project
```
其中,`address`需要替换为Nacos的实际地址。
4. 配置Sentinel
在`application.yml`文件中添加以下配置:
```yaml
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
datasource:
ds1:
nacos:
server-addr: localhost:8848
data-id: sentinel.yml
group-id: DEFAULT_GROUP
data-type: yaml
```
其中,`dashboard`需要替换为Sentinel Dashboard的实际地址。
5. 配置RocketMQ
在`application.yml`文件中添加以下配置:
```yaml
rocketmq:
name-server: localhost:9876
producer:
group: project-group
consumer:
group: project-group
```
其中,`name-server`需要替换为RocketMQ的实际地址。
6. 配置Seata
在`application.yml`文件中添加以下配置:
```yaml
spring:
cloud:
alibaba:
seata:
tx-service-group: project-group
mybatis:
mapper-locations: classpath*:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
```
7. 添加MySQL和Mybatis Plus支持
在`application.yml`文件中添加以下配置:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/project_db?useSSL=false&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis-plus:
global-config:
db-config:
id-type: auto
field-strategy: not_empty
table-prefix: t_
```
其中,`url`、`username`和`password`需要替换为实际的值。
8. 添加Dubbo服务
在`com.example.project.service`包下创建一个接口:
```java
public interface HelloService {
String sayHello(String name);
}
```
在`com.example.project.service.impl`包下创建接口的实现类:
```java
@Service(interfaceClass = HelloService.class)
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
```
9. 测试Dubbo服务
在`com.example.project.controller`包下创建一个Controller类:
```java
@RestController
public class HelloController {
@Reference
private HelloService helloService;
@GetMapping("/hello")
public String hello(@RequestParam("name") String name) {
return helloService.sayHello(name);
}
}
```
启动项目,并访问`http://localhost:8080/hello?name=World`,可以看到返回的结果为`Hello, World!`,说明Dubbo服务调用成功。
到此,一个基于Spring Cloud+Spring Boot+Nacos+Dubbo+mybatis plus+RocketMQ+Sentinel+Seata+mysql的项目手脚架就搭建完成了。
阅读全文