由浅及深、层层递进完成高性能后端项目开发,在实战中全面掌握主流技术:SpringBoot、MySQL、Redis、RocketMQ、FastDFS、Elasticsearch、RestFulAPI、双token登录认证、RBAC权限控制、Docker、Git、SourceTree、Nginx、JWK等。 【SpringBoot高性能后端项目实战课程【开篇】】 www.bilibili.com/video/BV1xK…
技术选型
Spring Boot 2.x
Spring Boot 是一个基于 Spring Framework 的开源 Java 基于 Spring Framework 的开源 Java 应用程序开发框架,用于创建独立、生产级的基于 Spring Framework 的应用程序。Spring Boot 2.x 是其较新的版本,具有以下特点:
- 自动配置:自动配置 Spring 和第三方库,简化开发。
- 独立运行:内嵌 Tomcat、Jetty 等容器,无需部署 WAR 文件。
- 简化配置:基于约定优于配置的原则,减少配置文件的编写。
- 微服务支持:与 Spring Cloud 集成,支持微服务架构。
【精读Spring英文原版书籍:Spring实战】 www.bilibili.com/video/BV1Cu…
MySQL
MySQL 是一个开源的关系型数据库管理系统,广泛应用于 Web 应用开发中。它具有以下特点:
- 高性能:支持高并发访问,适合处理大量数据。
- 易用性:提供丰富的 SQL 语言支持,易于学习和使用。
- 可扩展性:支持集群和分片,满足不同规模的应用需求。
【SQL必知必会,SQL入门必备术语,数据库入门必备知识】 www.bilibili.com/video/BV1AD…
【SQL实战训练营:房源评分统计】 www.bilibili.com/video/BV1HM…
【轻松学习SQL数据分析:在实战中学习SQL数据分析,轻松应对学习、工作】 www.bilibili.com/video/BV1JJ…
搜索引擎
【小而美开源搜索引擎MeiliSearch深度体验】 www.bilibili.com/video/BV1hK…
开发模式
1. 控制层(Controller 层)
控制层是应用程序的入口点,负责接收用户请求并调用服务层处理业务逻辑。它通常使用 Spring MVC 提供的注解来处理 HTTP 请求。例如:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getUserById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.saveUser(user);
}
}
2. 服务层(Service 层)
服务层是业务逻辑的核心,负责处理业务规则和数据操作。它通常由控制层调用,并与数据层交互。例如:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(Long id) {
return userMapper.selectById(id);
}
public User saveUser(User user) {
userMapper.insert(user);
return user;
}
}
3. 数据层(Dao 层)
数据层负责与数据库交互,执行 SQL 语句。在 MyBatis 中,通常通过 Mapper 接口和 XML 文件来实现。例如:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User selectById(Long id);
@Insert("INSERT INTO users (name, email) VALUES (#{name}, #{email})")
void insert(User user);
}
对应的 XML 文件:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectById" parameterType="long" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insert" parameterType="User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
</mapper>
项目结构示例
一个典型的基于 Spring Boot + MySQL + MyBatis + Maven 的项目结构可能如下:
my-project/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com.example.controller/
│ │ │ │ └── UserController.java
│ │ │ ├── com.example.service/
│ │ │ │ └── UserService.java
│ │ │ ├── com.example.mapper/
│ │ │ │ └── UserMapper.java
│ │ │ ├── com.example.model/
│ │ │ │ └── User.java
│ │ │ └── com.example.config/
│ │ │ └── MyBatisConfig.java
│ │ ├── resources/
│ │ │ ├── application.yml
│ │ │ └── mybatis/
│ │ │ └── UserMapper.xml
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── views/
│ └── test/
│ └── java/
│ └── com.example/
│ └── UserControllerTest.java
├── pom.xml