Spring Boot 学习笔记:项目搭建、分层架构与核心技术集成

Spring Boot 项目——分层架构 在创建一个 Spring Boot 项目时,为了提高代码的可维护性、可扩展性和清晰度,通常会按照一定的分层架构进行设计。 阅读详情

基本项目结构

在这里插入图片描述

springBoot项目创建

  • 直接创建(简单)
  • 通过maven创建(常用)

直接创建

用过idea

版本问题

Springboot2.x --> JDK8

Springboot3.x --> JDK17

要使用jdk8 需要更改server url镜像

http://start.aliyun.com

在这里插入图片描述

创建成功

在这里插入图片描述

通过maven创建

创建一个maven项目

在pom.xml中进行继承springBoot

<!--  继承springBoot-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.13</version>
  </parent>

导入spring依赖

<!--    springboot wed模块-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

在这里插入图片描述

构建springboot启动类

在这里插入图片描述

controller控制类

1. 类定义与注解

@Controller  // 标识这是一个控制器类,用于处理HTTP请求
@RequestMapping("user")  // 类级别的请求路径映射,所有方法的路径都会以"/user"为前缀
@ResponseBody  // 作用于类上,表示该类所有方法的返回值会直接作为响应体返回给前端(而非跳转页面)
public class UserController { ... }

2. 核心注解说明

  • @Controller:
    Spring 的核心注解之一,告诉 Spring 这是一个控制器组件,负责接收和处理客户端请求。
  • @RequestMapping(“user”):
    定义请求路径的映射规则。类上添加后,该类中所有方法的访问路径都需要加上/user前缀。
    例如:下面的text()方法访问路径为 /user/text。
  • @ResponseBody:
    表示方法的返回值会直接转换为 JSON / 字符串等格式,作为 HTTP 响应体返回给前端(常用于接口开发)。
    如果不加此注解,Spring 会默认将返回值解析为页面名称(用于视图跳转)。

3. 方法定义

@RequestMapping("text")  // 方法级别的请求路径映射,完整访问路径为 "/user/text"
public String text() {
    System.out.println("看看我执行了没有");  // 控制台输出日志,用于调试
    return "success";  // 返回字符串"success"给前端
}

4. 功能说明

当前端发送 HTTP 请求到路径 /user/text 时:

  1. Spring 会根据@RequestMapping注解找到UserController中的text()方法。
  2. 执行方法内的逻辑(打印日志)。
  3. 将返回值"success"作为响应体返回给前端(如浏览器会显示 “success”)。
package com.cykj.controller;
import com.cykj.vo.UserVO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @className: UserController
 * @author: ahatc
 * @date: 2025/8/21 01:47
 * @version: 1.0
 * @description: TODO
 */
//可以进行请求响应
@Controller
//请求映射
@RequestMapping("user")
//把方法的返回值返回给前端,不加默认返回页面
@ResponseBody
public class UserController {

    //1.简单的请求
    //http://127.0.0.1:8080/user/text
    @RequestMapping("text")
    public String text(){
        System.out.println("看看我执行了没有");
        return "success";
    }

    //2.请求携带参数
    //http://127.0.0.1:8080/user/login?username=zahngsan&password=123456
    @RequestMapping("login")
    public void login(String username,String password){
        System.out.println("我收到的账号:"+username);
        System.out.println("我收到的密码:"+password);
    }

    //3.参数很多==>封装成一个对象
    //http://127.0.0.1:8080/user/text03?id=2&username=rfw&password=213
    //参数名跟对象中属性名一样就会自动映射
    @RequestMapping("text03")
    public void text03(UserVO user){
        System.out.println(user);
    }

    //也可以请求页面 在resources下放static静态资源(页面)
    
}

mapper数据库操作

导入mysql mybatis依赖

类似mybatis操作注意.xml文件有固定的约束头

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//[mybatis](mybatis.md).org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace与接口绑定-->
<mapper namespace="org.example.mapper.UserMapper">  //包名+类名==>全限定名
  
</mapper>

Spring Boot 会通过 MyBatisAutoConfiguration 类自动完成以下工作:

  1. 自动读取配置文件(application.properties 或 application.yml)中的 MyBatis 相关配置
  2. 自动创建 SqlSessionFactory 和 SqlSession
  3. 自动扫描 Mapper 接口并创建实现类(代理对象)
  4. 将 Mapper 代理对象注入到 Spring 容器中

因此,在 Spring Boot 中使用 MyBatis 只需以下几步:

1. 添加依赖(Maven)

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.0</version> <!-- 版本号可根据实际情况调整 -->
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

2. 配置数据库连接(application.yml)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
    username: root
    password: your_password
    

//mybatis日志
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl     # 实体类包路径(可选,用于简化xml中的type配置)

3. 创建 Mapper 接口

package com.cykj.mapper;

import com.cykj.pojo.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper  // 标记为MyBatis的Mapper接口,Spring会自动扫描并创建代理对象
public interface UserMapper {
    User findById(int id);
}

4. 创建 Service 层调用 Mapper

package com.cykj.service;

import com.cykj.mapper.UserMapper;
import com.cykj.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    
    // 直接注入Mapper接口,Spring已自动创建代理对象
    @Autowired
    private UserMapper userMapper;
    
    public User getUserById(int id) {
        // 直接调用Mapper方法,无需手动创建SqlSession等
        return userMapper.findById(id);
    }
}

关键简化点:

  • 无需手动创建 SqlSessionFactory 和 SqlSession
  • 无需手动获取 Mapper 接口实例,直接通过 @Autowired 注入
  • 配置集中在 application.yml,无需单独的 MyBatis 配置文件(如 mybatis-config.xml)
  • 通过 @Mapper 注解或在启动类添加 @MapperScan("com.cykj.mapper") 批量扫描 Mapper 接口

这样就实现了 MyBatis 与 Spring Boot 的无缝集成,大大简化了开发流程。

分层架构

在典型的 Spring Boot 分层架构中,通常分为 控制层(Controller)、业务层(Service)、数据访问层(Mapper/Repository),有时还会包含 实体层(Entity/POJO) 和 工具层(Util) 等辅助层。各层职责明确,通过分层实现 “高内聚、低耦合”,便于维护和扩展。

这就是典型的 MVC(Model-View-Controller)+ Service + DAO 架构。

1. 实体层(Entity/POJO/Model)

  • 核心作用:封装数据,映射数据库表结构或业务数据模型。

  • 具体说明

    :

    • 通常对应数据库中的表,类的属性与表的字段一一对应(如 User 类对应 user 表,id、username 等属性对应表字段)。

    • 包含属性的 getter/setter 方法,有时会添加构造方法或重写 toString() 方便调试。

    • 示例

      public class User {
          private Integer id;
          private String username;
          private String password;
          // getter、setter、构造方法...
      }
      

2. 数据访问层(Mapper/Repository/DAO)

  • 核心作用:直接与数据库交互,负责数据的增删改查(CRUD)操作。

  • 具体说明

    :

    • 在 MyBatis 中通常称为 Mapper,通过接口 + XML 或注解定义 SQL 操作。

    • 不包含业务逻辑,仅专注于数据读写,方法名通常对应操作(如 findById、insertUser)。

    • 示例(MyBatis Mapper 接口):

      @Mapper
      public interface UserMapper {
          User findById(Integer id); // 查询用户
          int insert(User user); // 新增用户
      }
      

3. 业务层(Service)

  • 核心作用:处理核心业务逻辑,协调数据访问层与控制层,是业务规则的实现中心。

  • 具体说明

    • 编写业务逻辑(如注册、下单、积分计算等)

    • 事务控制(使用 @Transactional)

    • 调用多个 Mapper 或外部服务

    • 拆分复杂业务流程,提升可复用性

      // 接口
      public interface UserService {
          User getUserById(Integer id);
      }
      
      // 实现类
      @Service
      public class UserServiceImpl implements UserService {
          @Autowired
          private UserMapper userMapper;   //通过@Autowired自动注入 不需要新建对象
          
          @Override
          public User getUserById(Integer id) {
              if (id == null || id <= 0) {
                  throw new IllegalArgumentException("ID无效"); // 业务校验
              }
              return userMapper.findById(id); // 调用数据访问层
          }
      }
      

4. 控制层(Controller)

  • 核心作用:接收前端请求,调用业务层处理,返回响应结果(如 JSON、页面)。

  • 具体说明

    • 接收 HTTP 请求(@GetMapping/@PostMapping)

    • 处理请求参数(@RequestParam/@RequestBody)

    • 调用 Service 进行业务处理

    • 返回响应结果(ResponseEntity/JSON)

      @RestController
      @RequestMapping("/users")
      public class UserController {
          @Autowired
          private UserService userService;
          
          @GetMapping("/{id}")
          public ResponseEntity<User> getUser(@PathVariable Integer id) {
              User user = userService.getUserById(id);
              return ResponseEntity.ok(user); // 返回用户数据
          }
      }
      

5. 其他辅助层

  • 工具层(Util):存放通用工具类(如日期处理、加密、校验工具等),供各层调用。
  • DTO 层(Data Transfer Object):用于前后端数据传输的对象,可能与实体类不同(如简化字段、组合多表数据)。
  • 异常处理层(Exception Handler):通过 @ControllerAdvice 统一处理全局异常,返回友好提示。

各层调用关系

前端请求 → Controller(接收请求)→ Service(处理业务)→ Mapper(操作数据)→ 数据库
响应流程相反:数据库 → Mapper → Service → Controller → 前端

Controller 管接口,Service 管逻辑,Mapper 管数据库,Model 管数据结构(VO)。

src/
 └── main/
     ├── java/com/example/demo/
     │   ├── controller/     // 接收请求
     │   ├── service/        // 编写业务逻辑
     │   ├── mapper/         // 与数据库交互
     │   ├── model/          // 数据对象(Entity)
     │   ├── config/         // 配置类
     │   └── DemoApplication.java
     └── resources/
         ├── mapper/         // MyBatis XML 文件
         └── application.yml // 配置文件

类命名规范(VO与DO)

跟数据库映射的实体对象 后缀带DO

接收前端传输的数据 后缀带VO

  1. DO(Data Object 数据对象)

    • 用途:与数据库表直接映射,字段和表结构一一对应(如数据库有user表,就有UserDO)
    • 关联层:后端与数据库交互(如 MyBatis 用 DO 查 / 存数据)
    • 特点:仅含数据库表字段,无多余逻辑,是数据库数据在代码中的 “镜像”
  2. VO(Value Object 值对象)

    • 用途:专门接收前端传输的数据(如表单提交、接口入参),或向前端返回指定数据
    • 关联层:前后端交互(前端传参→后端用 VO 接收;后端返回数据→用 VO 封装给前端)
    • 特点:字段按需定义(可只包含前端需要的部分数据,无需和数据库表一致),可加参数校验(如非空、长度限制)
  3. 核心区别

    维度DOVO
    对应对象数据库表前后端交互数据
    核心作用数据库数据载体前后端数据传输载体
    字段来源数据库表结构前后端业务需求

注解

注解(Annotation)是 Java 语言的一种特殊标记,它可以在代码中添加元数据(描述数据的数据),用于告诉程序(编译器、框架等)如何处理这段代码。

注解本身不会直接影响代码的执行逻辑,但框架(如 Spring Boot)可以通过反射机制读取注解信息,从而实现特定功能(如自动注入、请求映射等)。

简单说,注解就像代码的 “标签”,框架通过识别这些标签来完成相应的自动处理,减少手动配置的工作量

1. MyBatis 相关注解

  • @Mapper(UserMapper.java)
    • 用途:标记该接口为 MyBatis 的映射器接口,MyBatis 会自动扫描并创建该接口的实现类,用于数据库操作。
  • @Param(UserMapper.java)
    • 用途:在 Mapper 接口方法的参数前使用,用于给参数命名。在 XML 映射文件中可以通过该名称引用参数(如 #{id})。

2. Spring 相关注解

  • @RequestBody(Controller 方法参数前)
    • 用途:标记该参数需要从 HTTP 请求体(Request Body)中获取数据,SpringMVC 会自动将请求体中的 JSON/XML 格式数据解析并绑定到该参数对象上,实现前端复杂数据(如对象、嵌套结构)向后端 Java 对象的自动转换,简化前后端数据交互。
  • @Service(UserService.java 和 UserServiceImpl.java)
    • 用途:标记类为 Spring 管理的服务层组件,用于业务逻辑处理。Spring 会自动扫描并将其纳入 IoC 容器管理。
  • @Autowired(UserServiceImpl.java 和 UserController.java)
    • 用途:自动注入依赖对象。Spring 会从 IoC 容器中查找匹配类型的 bean 并注入到字段中(如注入 UserMapper 到 UserServiceImpl)。
  • @Controller(UserController.java)
    • 用途:标记类为 Spring MVC 的控制器,用于处理 HTTP 请求。
  • @RequestMapping(UserController.java)
    • 用途:映射 HTTP 请求路径到控制器类或方法。
      • 在类上使用:指定该控制器的基础路径(如 @RequestMapping("user") 表示所有方法的路径前缀为 /user)。
      • 在方法上使用:指定具体方法处理的请求路径(如 @RequestMapping("text") 对应路径 /user/text)。
  • @ResponseBody(UserController.java)
    • 用途:作用于控制器方法,将方法的返回值直接作为 HTTP 响应体返回给前端(而非跳转页面),通常用于返回 JSON 或字符串数据。
  • @SpringBootApplication(App.java)
    • 用途:Spring Boot 应用的核心注解,组合了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan,用于启动 Spring Boot 应用并自动配置组件扫描、自动配置等功能。

3. Lombok 相关注解

  • @Data

    • 用途:Lombok 提供的注解,自动为类生成 getter、setter、toString()、equals()、hashCode() 等方法,简化代码编写。

返回前端

文件夹dto

ResponseDTO

DTO(Data Transfer Object,数据传输对象)是一种专门用于在不同层(通常是服务层与前端、或不同服务之间)传输数据的对象

创建dto类存储需要返回的内容一般包括

private Integer statusCode;

private String message;

private Object data;

以ResponseDOT类新建对象 返回前端

前后端交互

Spring Boot 集成 Thymeleaf 搭建 Web 应用 Thymeleaf 是一个流行的 Java 模板引擎,具有处理 HTML、XML、JavaScript、CSS 和纯文本的能力。Thymeleaf 可以和 Spring Boot 进行无缝集成,且可以非常容易地对 Java Model 类及其字段进行访问,从而对模板内容进行动态渲染。并且,Thymeleaf 还提供了一组简单有力的表达式来支持循环、条件判断、静态工具类及 Spring Bean 访问等能力。此外,Thymeleaf 还对自定义扩展以及表单提供了很好的支持。 阅读详情

相关推荐

如何在idea中快速搭建一个Spring Boot项目?

Spring Boot 凭借其便捷的开发特性,极大提升了开发效率,为 Java 开发工作带来诸多便利。许多大伙伴希望快速上手使用它。本文将详细介绍在 IDEA 开发工具中,如何高效搭建 Spring Boot 项目,帮助大家迈出 Spring Boot 开发的第一步。

2302_78879607的博客 5033

Spring Boot 全方位指南:从项目初始化到分层架构搭建

本教程旨在引导 Java 开发者,特别是 Spring Boot 的初学者,从零开始创建一个结构清晰、功能完备的后端项目。我们将从项目初始化开始,详细讲解每一项依赖的作用,然后配置数据库(MongoDB 或 MySQL),并最终搭建起经典的 MVC(Model-View-Controller)分层架构。

BI 1013

Spring Boot / Spring MVC 入门实践 (一) :环境搭建与第一个项目

本系列文章系本人原创,欢迎转载,转载请注明出处。 本系列文章通过具体的例子,介绍如何通过Spring Boot来帮助简化Spring MVC开发Web Application的过程,旨在通过具体的实践,使读者能够入门利用Spring Boot开发Web Application。

import_java_any的博客 2万+

Spring Initializr搭建spring boot项目

Spring Initializr 是一个用于快速生成 Spring Boot 项目结构的工具。它为开发者提供了一种便捷的方式,可以从预先定义的模板中创建一个新的 Spring Boot 应用程序,从而节省了从头开始设置项目的大量时间。选择项目构建工具:支持 Maven 和 Gradle。选择语言:支持 Java、Kotlin 和 Groovy。选择 Spring Boot 版本:你可以选择你想要使用的 Spring Boot 版本。添加依赖:根据你的项目需求添加所需的依赖项。

qq_73187469的博客 1789

Spring Boot系列十三 Spring Boot集成RabbitMQ

1. 概述之前我有一系列关于RabbitMQ文章介绍了RabbitMQ的用法,本篇我们介绍如何在Spring Boot中集成RabbitMQ。本篇主要内容如下: 在Spring boot中消息的发送和接收的两种方式的demo 配置使用MessageConverter对消息序列化 2. Demo工程公共部分介绍工程名称:rabbitmq需要在我们的工程中的pom.xml引入新jar <!-- spri

不积跬步无以至千里; 不积小流无以成江海 1万+

Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程

Redisson提供了两种集成 Redis 的方式:原始依赖和 Spring Boot Starter。原始依赖适用于需要完全自定义配置的场景,而使得集成过程变得更加简单,特别适合 Spring Boot 项目。根据具体项目的需求和开发环境选择合适的方式,能够更好地帮助你完成项目的 Redis 集成,实现更强大的分布式能力。

m0_74823683的博客 1164

Maven 与 Spring Boot 项目的集成

Spring Boot 是一个开箱即用的框架,用于快速构建生产级别的 Spring 应用。它大大简化了 Spring 项目的配置和部署,提供了很多自动化配置,极大地提升了开发效率。

秋元的博客 1284

用Maven开发Spring Boot 项目

在Spring体系中,较早实现MVC框架的有Struts-Spring-Hibernate(SSH)框架和Spring-Spring MVC+MyBatis(SSM)框架,为了进一步在保证功能的前提下优化项目的开发流程,Pivotal公司于2014年4 月发布了Spring Boot 的第一个版本,当下该框架已经升级到了3.2.1版本。Spring Boot框架是一 套开源的后台开发框架, 继承了Spring MVC框架的前辈SSM框架的优秀特性,通过注解大幅减少程序员写配置的工作量。

m0_74825260的博客 1847

Spring Boot集成knife4j

1、单体项目集成2、聚合项目集成。

weixin_38716921的博客 2045

超详细从0开始搭建 Spring Boot 项目

1.0.0 创建项目 我使用的ide 是 idea 创建项目 选择 Spring initializr ,如果点Next一直在转圈,可能是 start.spring.io/ 在国外,访问比较慢。可以科学上网或者,使用自定义的 start.spring.io/ 主要改以下组织名称、项目名称和项目描述就好了 我创建项目的时候, Spring Boot 最新稳定版是 2.1.9 。要用就用最新的!!! 依赖先都不勾选,后期一项一项加 项目文件夹名称以及存放位置 添加maven镜像 添加

algftxjgs的博客 1897

Spring Boot项目搭建流程_springboot项目搭建流程

Spring Boot是一款基于Spring Framework的开源框架,用于快速构建独立的、可运行的、生产级的Spring应用程序。它通过自动化配置、减少样板代码和默认的项目结构,极大地简化了Spring应用程序的开发过程。本文将详细介绍Spring Boot项目搭建的流程。

jiameih的博客 1070

Spring Initializr集成:用lsp-java快速创建Spring Boot项目

lsp-java是一款专为Emacs打造的Java语言服务器协议客户端,它与Spring Initializr深度集成,为开发者提供了快速创建和配置Spring Boot项目的完整解决方案。通过lsp-java,你可以在Emacs环境中一站式完成项目初始化、依赖管理和代码开发,大幅提升Spring Boot应用的开发效率。 ## 为什么选择lsp-java创建Spring Boot项目? ls

gitblog_00572的博客 956

Spring Boot入门(02):【教程】轻松搭建Spring Boot开发环境,启动你的第一个Web项目!

快速搭建开发环境和启动项目是每个开发人员必备的技能。本文将为您提供一些简单易懂的方法和技巧,以帮助您快速搭建开发环境和启动项目。我们将介绍如何选择适合您的开发工具、配置您的操作系统、安装必要的软件包和依赖项,并开始编写您的第一个应用程序。无论您是一位新手还是一位经验丰富的开发人员,本文都会给您提供有用的信息和实用的建议,让您在最短时间内快速搭建和启动开发项目。

**My Coding Family** 22万+

Spring Boot集成Spring MVC:快速搭建Web应用

Spring Boot提供了许多自动配置,但你也可以根据需要进行自定义配置。例如:server:port: 8081import org// 在这里添加自定义配置,例如拦截器、视图解析器等 }// 在这里添加自定义配置,例如拦截器、视图解析器等 }// 在这里添加自定义配置,例如拦截器、视图解析器等 }import org// 在这里添加自定义配置,例如拦截器、视图解析器等 }// 在这里添加自定义配置,例如拦截器、视图解析器等 }

1362

一分钟快速搭建 Spring Boot 项目

大家好,我是二哥呀! 学 Java,自然少不了 Spring Boot 的学习!作为一名 Java 技术博主,已经被催了 N 多次 Spring Boot 的教程了,再不更新真有点鸽的不成样子——鸽上加鸽。 因此我打算在接下来一段时间里间歇性地输出一些 Spring Boot 方面的文章,包括一些非常入门级的教程和一些非常优质的 Spring Boot 项目推荐,已经身经百战的 starter 们忽略就好。 《Java 程序员进阶之路》在 GitHub 上获得了 872 个 star,还没去点亮的小伙伴去

沉默王二 3661

Spring Boot 2与Spring MVC:Web应用项目搭建教程

在现代企业级应用开发中,Spring Boot已成为众多开发者的首选框架。但Spring Boot并不是凭空诞生的,它在解决传统Spring框架所面临的开发效率和复杂配置问题的过程中应运而生。MVC(Model-View-Controller)是一种广泛应用于用户界面和网络设计的设计模式。MVC模式将应用程序分为三个主要组件:Model(模型):数据模型层,负责应用的数据存储和业务逻辑。它是应用程序的核心,处理数据的访问和修改。View(视图):界面显示层,负责展示数据(模型)。

weixin_35639680的博客 1120

从 0 到 1 搭建 Spring Boot 项目:

本文分享了作者从SSM框架转向SpringBoot的开发经验,详细介绍了从零搭建Web项目的完整流程。文章包含五个核心部分:1)项目初始化,使用Spring Initializr快速创建基础架构;2)核心配置,讲解数据库、MyBatis和服务器的简化配置;3)功能实现,展示用户管理模块的完整开发流程;4)测试与部署的注意事项;5)学习总结,强调"约定优于配置"的优势。作者通过实战案例展示了SpringBoot简化开发、提升效率的特点,同时分享了常见问题的解决方案,为新手开发者提供了实用参

2401_82825386的博客 1137

Spring Boot + DDD 分层架构项目实战

本文还有配套的精品资源,点击获取 简介:Spring Boot 和领域驱动设计(DDD)结合,可构建高效分层架构。本项目示例展示了基础设施层、应用服务层、领域层、接口适配器层等组件的实现,并涵盖了实体、值对象、聚合根、领域事件等核心概念。通过 Spring Data JPA 和 Spring 框架注解,可实现各层间的依赖注入和解耦。本项目提供了一个实践机会,帮助理解 Spr...

weixin_36123300的博客 2159
上一篇: Java 多线程学习笔记:从基础创建到线程池与线程安全
下一篇: MyBatis 从入门到实战:核心配置、映射开发与动态 SQL 全解析
Ahtacca
博客等级 码龄1年 55粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值