最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot入门实践:学习笔记与项目案例
时间:2026-05-31 14:15:01 编辑:袖梨 来源:一聚教程网
Spring Boot作为现代Java开发的标杆框架,通过约定优于配置的理念大幅简化了企业级应用搭建流程。本教程将系统讲解其核心特性、实战项目开发及主流技术整合,带您从零构建高效后端服务。
1、什么是Spring boot
Spring Boot 是基于Spring的快速开发框架,采用"自动配置"和"约定优于配置"的设计理念,将传统Spring项目简化为开箱即用的形式。它内置服务器、自动依赖管理等特性,开发者无需编写大量XML或繁琐配置,即可快速搭建并运行Web服务等后端应用。
起步依赖(Starter)是该框架的重要特性,它将某一类常用功能所需的所有依赖预先打包配置好,开发者只需引入一个依赖即可。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
自动配置机制遵循约定优于配置原则,在应用启动时自动将所需Bean注入IOC容器,无需手动声明,极大简化开发流程。
什么是微服务
微服务架构将单体应用拆分为多个小型独立服务,每个服务专注单一业务功能(如用户、订单、支付),通过HTTP API进行通信。这种架构的优势在于各服务可独立开发部署,提升系统灵活性和可维护性,但也增加了服务间通信和运维复杂度。
2、第一个SpringBoot项目
1、快速上手
通过start.spring.io/可快速构建项目,IDEA内置该功能并支持切换为国内镜像start.aliyun.com。



启动类运行后,若失败需检查是否添加web-starter依赖,建议不指定版本让Spring自动选择。

控制器类需与启动类同级包,因Spring Boot默认扫描启动类所在包及其子包。



通过以下操作可将应用打包为可执行JAR:


2、配置
1、properties和pom.xml
# 端口配置
server.port=8081
# 应用名称
spring.application.name=demo
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
# 日志级别
logging.level.root=INFO
logging.level.com.zhang=DEBUG
在资源目录下添加banner.txt可自定义启动图案:

推荐使用bootschool.net/ascii获取ASCII艺术字:
████ █████ ████████ █████ █████
░░███ ███░░░███ ███░░░░███ ░░███ ░░███
░███ ███ ░░███ ░░░ ░███ ░███ ░███ █
░███ ░███ ░███ ███████ ░███████████
░███ ░███ ░███ ███░░░░ ░░░░░░░███░█
░███ ░░███ ███ ███ █ ░███░
█████ ░░░█████░ ░██████████ █████
░░░░░ ░░░░░░ ░░░░░░░░░░ ░░░░░
大吉大利 永无BUG
2、原理:自动配置类比外卖套餐
引入starter依赖如同点套餐,Spring Boot启动时会从"菜单清单"(自动配置类列表)查找所需组件(如Tomcat、Spring MVC等),根据当前环境条件自动创建并注入容器。
实现机制:
- 基于@EnableAutoConfiguration实现
- 通过AutoConfigurationImportSelector读取自动配置类
- 根据@Conditional系列条件注解按需注册Bean

3、自定义starter开发
实际开发中常需封装公共组件为starter供各团队使用。


1、自动配置依赖
自动配置模块需包含技术实现类及对应依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
<version>4.0.6version>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
<version>4.0.6version>
<scope>compilescope>
dependency>
2、编写自动配置类
package com.zhang.config;
@AutoConfiguration
public class MyBatisAutoConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory) {
MapperScannerConfigurer configurer = new MapperScannerConfigurer();
configurer.setBasePackage(AutoConfigurationPackages.get(beanFactory).get(0));
configurer.setAnnotationClass(Mapper.class);
return configurer;
}
}
创建AutoConfiguration.imports文件声明自动配置类:

3、编写starter模块
starter模块仅需引入autoconfigure依赖:


4、测试验证
替换官方mybatis-starter验证自定义starter:


4、yml配置
Spring Boot支持两种配置文件格式:
- application.properties - key=value格式
- application.yml - 层级结构,更简洁直观
YAML优势在于更清晰的层级表达,推荐使用:
server:
port: 8080
student:
name: qinjiang
age: 3
pets:
- cat
- dog
2、实体类注入
通过@ConfigurationProperties实现配置到对象的映射:

3、JSR303校验
使用@Validated注解配合校验注解确保数据合规:

| 校验类型 | 注解 | 示例 |
|---|---|---|
| 非空校验 | @NotNull, @NotEmpty, @NotBlank | @NotBlank String name |
| 数值范围 | @Min, @Max | @Min(18) int age |
| 格式校验 | @Email, @Pattern | @Email String email |
4、多环境配置
通过profile实现环境隔离:
spring:
profiles:
active: dev
推荐多文件方式管理环境配置:
application-dev.yml
application-prod.yml

3、整合MyBatis
1、依赖与配置
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>4.0.1version>
dependency>
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis
username: root
password: 123456
2、业务实现
完整的三层架构示例:
// Mapper层
@Mapper
public interface UserMapper {
@Select("select * from user where id = #{id}")
User getUserById(int id);
}
// Service层
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
public User getUserById(int id) {
return userMapper.getUserById(id);
}
}
// Controller层
@RestController
public class UserController {
@Autowired
private UserServiceImpl userService;
@GetMapping("/findById")
public User findById(Integer id) {
return userService.getUserById(id);
}
}

4、安全认证
1、JWT令牌
引入java-jwt实现令牌机制:
<dependency>
<groupId>com.auth0groupId>
<artifactId>java-jwtartifactId>
<version>4.5.0version>
dependency>
2、登录实现
@PostMapping("/login")
public Result login(String username, String password) {
User user = userService.findByUsername(username);
if(user == null) {
return Result.error("用户不存在");
}
if(!MD5Util.md5(password).equals(user.getPassword())) {
return Result.error("密码错误");
}
Map<String, Object> claims = new HashMap<>();
claims.put("id", user.getId());
claims.put("username", username);
String token = JwtUtil.genToken(claims);
return Result.success(token);
}
3、拦截器验证
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String token = request.getHeader("Authorization");
try {
JwtUtil.parseToken(token);
return true;
} catch (Exception e) {
response.setStatus(401);
return false;
}
}
}
5、Redis集成
引入Spring Data Redis实现令牌管理:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
spring:
redis:
host: localhost
port: 6379
登录时存储令牌:
@Autowired
private StringRedisTemplate redisTemplate;
@PostMapping("/login")
public Result login(String username, String password) {
// ...验证逻辑...
String token = JwtUtil.genToken(claims);
redisTemplate.opsForValue().set(token, token, 12, TimeUnit.HOURS);
return Result.success(token);
}
6、文件上传
使用MultipartFile处理文件上传:
@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
String filename = UUID.randomUUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
file.transferTo(new File("uploads", filename));
return Result.success(filename);
}
7、分页查询
使用PageHelper实现分页:
@GetMapping
public Result> list(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List articles = articleMapper.list();
Page page = (Page) articles;
PageBean pageBean = new PageBean<>();
pageBean.setTotal(page.getTotal());
pageBean.setItems(page.getResult());
return Result.success(pageBean);
}
本教程系统讲解了Spring Boot核心功能及企业级应用开发全流程,从基础配置到安全认证,从数据持久化到文件处理,帮助开发者快速掌握现代Java后端开发关键技术栈。通过完整项目实战,您将具备独立开发企业级应用的能力。
相关文章
- 《最后的咒语》解锁武器武器风格与等级介绍 05-31
- Transformer学习语义关联的机制:梯度主导项带来可解释性 05-31
- Java实现Excel行列插入与删除操作指南 05-31
- 燕云十六声三重箭矢打击通关方法 05-31
- Deep Delta Learning:Transformer残差流的选择性改写机制 05-31
- 燕云十六声卓玉麟怎么结交 卓玉麟对话攻略 05-31