springboot_01

00 -- 导学

内容

  • 为什么学 SpringBoot3 + Vue3?
  • 后端:SpringBoot3 是当前企业后端开发主流框架。

  • 前端:Vue3 是企业招聘要求最普遍的前端技术。

  • 学完具备独立开发后台管理系统能力。

工具链

  • JDK 17+

  • IDEA

  • Node.js

  • Maven/Gradle

技巧

  • 配置好环境变量。

  • IDEA 中设置 Maven 阿里云镜像,下载依赖快。

01 -- SpringBoot 概述

核心思想

  • 自动配置(AutoConfiguration)

  • 起步依赖(Starter)

  • 内嵌服务器(Tomcat/Jetty)

常用 Starter

  • spring-boot-starter-web

  • spring-boot-starter-data-jpa

  • spring-boot-starter-test

小坑

  • 不要和老版 Spring MVC XML 混用。

  • 多个配置文件时,application.yml 优先。

02 -- SpringBoot 入门示例

关键注解

  • @SpringBootApplication

等同于:

```java

@Configuration

@EnableAutoConfiguration

@ComponentScan

```

入口类示例

java 复制代码
@SpringBootApplication

public class DemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);

    }

}

小坑

  • 启动类要放在根包,否则组件无法扫描到。

03 -- 工程创建

推荐目录结构

复制代码
src/main/java

 ├── com.xxx.demo

 |     ├── controller

 |     ├── service

 |     ├── mapper

 |     ├── entity

 |     ├── config

 |     ├── DemoApplication.java

src/main/resources

 ├── application.yml

 ├── mapper/*.xml

技巧

  • spring-boot-starter-parent 管理依赖版本。

  • IDEA 设置 Maven 自动导入。

04 -- 配置文件基本使用

优先级

命令行参数 > 环境变量 > application.yml > application.properties

示例

yaml 复制代码
server:

  port: 8081

spring:

  datasource:

    url: jdbc:mysql://localhost:3306/test

    username: root

    password: 123456

小坑

  • 端口冲突要修改 server.port

  • .yml 更适合层级结构,推荐用它。

05 -- YAML 配置与读取

YAML 语法

yaml 复制代码
person:

  name: Tom

  age: 20

  hobbies:

    - code

    - music

读取配置

  • 单个值:

```java

@Value("${person.name}")

```

  • 批量值:

```java

@Component

@ConfigurationProperties(prefix = "person")

public class Person {

private String name;

private int age;

private List hobbies;

}

```

小坑

  • @ConfigurationProperties 需要 @Component@EnableConfigurationProperties

  • 批量读取不要用 @Value

06 -- 整合 MyBatis

依赖

xml 复制代码
<dependency>

    <groupId>org.mybatis.spring.boot</groupId>

    <artifactId>mybatis-spring-boot-starter</artifactId>

</dependency>

Mapper

java 复制代码
@Mapper

public interface UserMapper {

    User selectById(Long id);

}

小坑

  • Mapper 必须有 @Mapper 或配置 @MapperScan

  • XML 文件要放对位置。

  • 分页推荐用 MyBatis-Plus。

07 -- Bean 扫描机制

注解

  • @Component:泛用组件

  • @Service:业务逻辑层

  • @Repository:数据访问层

  • @Controller:控制层

  • @RestController@Controller + @ResponseBody

小坑

  • 如果包结构复杂,记得配 @ComponentScan(basePackages = "...")

08 -- Bean 注册方式

三种方式

  1. @Component / @Service / @Controller

  2. 配置类 + @Bean

```java

@Configuration

public class AppConfig {

@Bean

public UserService userService() {

return new UserService();

}

}

```

  1. 条件注册:@Conditional 系列

小坑

  • @Bean 方法名就是 Bean 名。

  • 不同注册方式注意优先级。

09 -- 条件注册

常见条件注解

  • @ConditionalOnBean

  • @ConditionalOnMissingBean

  • @ConditionalOnProperty

小坑

  • 条件不满足就不注册,要注意 NPE 风险。

  • Starter 的自动装配大量用到条件注册。

10 -- 自动配置原理

核心

  • @EnableAutoConfiguration

  • META-INF/spring.factories

原理

  • 启动时加载所有 spring.factories 中配置,自动装配需要的 Bean。

小坑

  • 不满足条件就不会装配。

  • 可以开启 debug=true 查看自动配置情况。

11 -- 自定义 Starter

结构

  • core:功能实现

  • autoconfigure:自动装配

自动装配类示例

java 复制代码
@Configuration

@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")

public class MyAutoConfig {

    @Bean

    public MyBean myBean() {

        return new MyBean();

    }

}

声明

properties 复制代码
# resources/META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\

com.xxx.demo.autoconfig.MyAutoConfig

小坑

  • Starter 不要引入 spring-boot-starter-web

  • 自动装配类命名要唯一。

相关推荐
用户83562907805110 分钟前
使用 Python 设置 Excel 数据验证
后端·python
yoyo_zzm13 分钟前
Laravel6.x新特性全解析
java·spring boot·后端
xiaobaoyu22 分钟前
ssm
后端
Nick_zcy24 分钟前
小说在线阅读网站和小说管理系统 · 功能全解析
java·后端·python·springboot·ruoyi
源码宝27 分钟前
基于 SpringBoot + Vue 的医院随访系统:技术架构与功能实现
java·vue.js·spring boot·架构·源码·随访系统·随访管理
王中阳Go36 分钟前
2026年了,还在纠结后端转AI要不要死磕Python?试试Go吧
后端·go·ai编程
用户8356290780511 小时前
用 Python 轻松在 Excel 工作表中应用条件格式
后端·python
red1giant_star1 小时前
Python根据文件后缀统计文件大小、找出文件位置(仿Everything)
后端·python
长大19881 小时前
每秒10万写入的订单系统:MySQL分库分表、缓冲设计、批量写入优化实战
后端
渐儿1 小时前
缓存一致性与分布式锁:工程踩坑全解
后端