Skip to content

Java 与 Spring Boot 入门

一、Java 语法速览(零基础也能跟上)

类与对象

java
public class Product {
    private Long id;
    private String name;
    private BigDecimal price;
    private Integer stock;

    // getter / setter(后续用 Lombok @Data 自动生成)
}

高频语法对照

场景JavaJavaScript/TypeScript
变量int count = 0;let count = 0
常量final int MAX = 10;const MAX = 10
列表List<String> list = new ArrayList<>();const list = []
遍历for (Product p : list) { }list.forEach(p => {})
判空Objects.isNull(obj)obj === null
注解@Override装饰器(类似)

Lombok:减少样板代码

实体类加 @Data,getter/setter/toString 自动生成:

java
import lombok.Data;

@Data
public class Product {
    private Long id;
    private String name;
    private BigDecimal price;
}

IntelliJ 需装 Lombok 插件,pom 里引入依赖后即可使用。

二、什么是 Spring Boot

Spring 是 Java 企业开发的事实标准。Spring Boot 则把"一堆复杂配置"封装成自动配置——引入依赖、写几行配置,应用就能跑。

核心能力:

  • 内嵌 Tomcat,java -jar 直接启动 Web 服务
  • 约定优于配置,默认值开箱即用
  • 丰富的 Starter 生态(web、mybatis、security...)

三、创建工程(两种方式)

方式一:Spring Initializr(官方推荐)

打开 start.spring.io

  • Project: Maven
  • Language: Java
  • Spring Boot: 3.x(稳定版)
  • Group: com.mall
  • Artifact: server
  • Java: 17
  • 依赖勾选:Spring WebMySQL DriverLombokValidation

生成后解压到 server/ 目录。

方式二:IDEA 内置创建

IntelliJ IDEA → New Project → Spring Initializr,选项同上。

四、pom.xml:核心依赖

xml
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.2</version>
</parent>

<dependencies>
    <!-- Web:内嵌 Tomcat + Spring MVC -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 参数校验 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <!-- MyBatis-Plus(Boot 3 用 3.5.x 版) -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        <version>3.5.7</version>
    </dependency>
    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

五、配置文件

yaml
# server/src/main/resources/application.yml
server:
  port: 8080

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: 你的密码

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true   # 数据库下划线 → Java 驼峰
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  # 控制台打印 SQL
  global-config:
    db-config:
      logic-delete-field: deleted         # 逻辑删除字段
      logic-delete-value: 1
      logic-not-delete-value: 0

六、启动类与依赖注入

java
package com.mall;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication          // 启动类 + 自动配置
@MapperScan("com.mall.mapper")  // 扫描 Mapper 接口
public class MallApplication {
    public static void main(String[] args) {
        SpringApplication.run(MallApplication.class, args);
    }
}

依赖注入(DI / IoC):Spring 自动创建对象并注入到需要的地方。这是企业后端的基础能力。

java
@Service
public class ProductService {
    private final ProductMapper productMapper;

    // 构造器注入(推荐写法)
    public ProductService(ProductMapper productMapper) {
        this.productMapper = productMapper;
    }
}

七、验收

bash
cd server
mvn spring-boot:run
# 或打成 jar 运行
mvn package -DskipTests
java -jar target/server-0.0.1-SNAPSHOT.jar

看到 Tomcat started on port 8080 即成功。浏览器访问 http://localhost:8080(暂时返回 404 是正常的,还没写接口)。

常见坑

  1. JDK 版本:Spring Boot 3 需要 Java 17+,java -version 确认。
  2. 数据库连接:先建好 mall 库(CREATE DATABASE mall;),否则启动报连接错误。
  3. 依赖下载慢:Maven 配国内镜像(阿里云),百度"Maven 阿里云镜像配置"。

基于 MIT 协议发布,可自由学习与修改