SpringCloud简单例子
Windows10下使用SpringCloud构建微服务架构
1. SpringCloud简介
SpringCloud是一个基于Spring Boot的分布式系统开发工具集,可以快速构建出适用于云环境的应用程序。它提供了众多的组件和子项目,包括服务发现、配置管理、断路器、网关等等。
Spring Cloud为开发者提供了一整套完整的分布式解决方案,从而可以更加敏捷地开发和部署分布式应用程序。
2. Gateway和Nacos模块
Gateway是SpringCloud中的网关服务,主要作用是在微服务架构中扮演着API网关的角色,负责请求的转发、路由、过滤、降级等操作。
Nacos是一种新一代的动态服务发现、配置管理平台,支持多种协议(例如DNS、HTTP等)和多种数据类型(例如JSON、YAML等)。它可以让服务注册、发现和配置都变得非常简单。
3. 完整配置和代码
3.1 环境搭建
- JDK 1.8以上版本
- SpringBoot 2.3.4.RELEASE版本
- SpringCloud Hoxton.SR8版本
- MySQL 5.7版本
- IDE:推荐使用IntelliJ IDEA
3.2 创建SpringCloud项目
在IDE中创建一个SpringBoot项目,然后将以下依赖添加到pom.xml
文件中:
<!-- SpringCloud Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- SpringCloud Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- MySQL 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatisPlus框架 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
3.3 配置文件
在application.properties
中添加以下配置:
server.port=9000 # 端口号
spring.application.name=gateway-service # 应用名
# nacos 注册中心配置
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.namespace=
# gateway 路由配置
spring.cloud.gateway.routes[0].id=service-provider
spring.cloud.gateway.routes[0].uri=http://localhost:8081
spring.cloud.gateway.routes[0].predicates[0]=Path=/provider/**
# MySQL数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# MyBatisPlus配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.configuration.map-underscore-to-camel-case=true
3.4 Java代码
3.4.1 实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
3.4.2 DAO层
@Mapper
public interface UserDao extends BaseMapper<User> {
}
3.4.3 服务层
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
public void addUser(User user) {
userDao.insert(user);
}
public User getUserById(Integer id) {
return userDao.selectById(id);
}
}
3.4.4 控制层
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/")
public String addUser(@RequestBody User user) {
userService.addUser(user);
return "添加成功";
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Integer id) {
return userService.getUserById(id);
}
}
3.5 注意事项
- 在使用Nacos作为注册中心时,需要在服务器上安装Nacos Server。
- Gateway中的路由配置是按照顺序匹配的,如果有多个路由符合请求URI,则会选择第一个匹配的路由。
- 配置文件中的
spring.datasource.url
根据自己的实际情况进行修改。
总结
以上就是一个简单的SpringCloud微服务架构的示例,利用了Gateway、Nacos和MyBatisPlus等组件,可以快速构建分布式系统。此外,我们还额外细化了包括控制层、服务层、DAO层和实体类等内容,以便展示每个层级的详细代码实现。
还没有评论,来说两句吧...