5、spring-boot-starter-cache 介绍和在 Spring Boot 中集成使用

Spring Boot 3.x 集成 Curator 5.5.0:实现配置热更新与3级缓存策略 本文详细介绍了如何在Spring Boot 3.x中集成Curator 5.5.0,实现配置热更新与三级缓存策略。通过本地内存、Guava Cache和ZooKeeper的三级缓存架构,解决了微服务配置中心的实时性与性能矛盾,支持毫秒级响应和高吞吐量。重点解析了Curator的NodeCache监听机制及其在生产环境中的优化实践。 阅读详情

spring-boot-starter-cache 是 Spring Boot 中用于 简化缓存集成 的核心模块,它基于 Spring Framework 的 缓存抽象(Cache Abstraction),让你无需关心底层缓存实现(如 Redis、Caffeine、Ehcache 等),通过简单的注解即可实现缓存逻辑。

下面我将为你提供一份 详细、实战级的说明文档,涵盖其作用、原理、使用方法、集成方案、最佳实践,并结合 Spring Boot / Spring Cloud 项目场景进行深入讲解。


📚 spring-boot-starter-cache 详细说明文档

适用版本:Spring Boot 2.x / 3.x
适用场景:微服务、高并发、读多写少的系统(如电商、内容平台、用户中心等)


一、什么是 spring-boot-starter-cache?

spring-boot-starter-cache 是 Spring Boot 提供的一个 缓存启动器(Starter),它的作用是:

✅ 引入 Spring 的缓存抽象模块(spring-context-support)
✅ 自动配置 CacheManager(根据类路径选择默认实现)
✅ 支持通过注解(如 @Cacheable、@CacheEvict)声明式地管理缓存
✅ 解耦业务代码与缓存实现(可自由切换 Caffeine、Redis、Ehcache 等)

🔥 一句话总结:
它不是缓存实现,而是一个“缓存门面”——让你用统一的方式操作各种缓存。


二、核心作用与优势

作用说明
✅ 声明式缓存使用 @Cacheable 注解自动缓存方法返回值
✅ 缓存抽象业务代码不依赖具体缓存技术(Redis/Caffeine)
✅ 自动配置Spring Boot 根据引入的依赖自动配置 CacheManager
✅ 多缓存支持支持多种缓存并存(如本地 + Redis)
✅ 易于测试可在单元测试中禁用缓存或使用 SimpleCache

三、核心注解详解

注解作用示例
@Cacheable方法执行前查缓存,命中则不执行方法@Cacheable("users")
@CachePut方法执行后更新缓存(无论是否命中)@CachePut("users")
@CacheEvict清除缓存(用于更新/删除操作)@CacheEvict("users")
@Caching组合多个缓存操作@Caching(evict = {...}, put = {...})
@CacheConfig类级别缓存配置(公共属性)@CacheConfig(cacheNames = "users")

四、如何在 Spring Boot / Spring Cloud 项目中使用?

1. 添加依赖(Maven)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

⚠️ 注意:这个 Starter 只提供缓存抽象,你需要额外引入一个缓存实现,例如:

  • spring-boot-starter-data-redis → 使用 Redis
  • caffeine → 使用本地缓存

2. 启用缓存支持

在主类或配置类上添加 @EnableCaching:

@EnableCaching  // 开启缓存支持
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3. 使用缓存注解

示例:用户服务缓存
@Service
@CacheConfig(cacheNames = "users")  // 公共缓存名
public class UserService {

    @Autowired
    private UserRepository userRepository;

    // 查询时先查缓存,key = user:1001
    @Cacheable(key = "#id")
    public User getUserById(Long id) {
        System.out.println("查询数据库...");
        return userRepository.findById(id).orElse(null);
    }

    // 更新后清除缓存
    @CacheEvict(key = "#user.id")
    public void updateUser(User user) {
        userRepository.save(user);
    }

    // 删除后清除缓存
    @CacheEvict(key = "#id")
    public void deleteUser(Long id) {
        userRepository.deleteById(id);
    }

    // 强制更新缓存(即使未调用方法)
    @CachePut(key = "#user.id")
    public User forceUpdateCache(User user) {
        return user;
    }
}

五、缓存 Key 生成策略

1. 默认 Key 生成规则

  • 单参数:参数值本身
  • 多参数:SimpleKey 包装所有参数
  • 无参数:SimpleKey.EMPTY
@Cacheable("users")
public User findUser(String name, Integer age) {
    // key = SimpleKey[name,age]
}

2. 自定义 Key(推荐)

@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) { ... }

@Cacheable(value = "users", key = "#user.id + ':' + #user.orgId")
public User getUserByOrg(User user) { ... }

3. 使用 SpEL 表达式

@Cacheable(value = "users", key = "#root.methodName + ':' + #id")
public User getUserById(Long id) { ... }

六、集成常见缓存实现(推荐做法)

✅ 场景 1:本地缓存(高性能,适合热点数据)

使用 Caffeine(推荐)
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>
@Configuration
public class CacheConfig {

    @Bean
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager();
        cacheManager.setCaffeine(Caffeine.newBuilder()
            .maximumSize(1000)
            .expireAfterWrite(10, TimeUnit.MINUTES)
            .recordStats());
        return cacheManager;
    }
}

✅ 优势:性能极高,适合 L1 缓存


✅ 场景 2:分布式缓存(跨服务共享)

使用 Redis
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
@Configuration
public class RedisCacheConfig {

    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory factory) {
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
            .entryTtl(Duration.ofMinutes(30))
            .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));

        return RedisCacheManager.builder(factory)
            .cacheDefaults(config)
            .build();
    }
}

✅ 优势:跨实例共享,适合 L2 缓存


✅ 场景 3:多级缓存(L1 + L2)

结合 Caffeine(本地) + Redis(分布式)

@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
    // L2: Redis
    RedisCacheConfiguration redisConfig = RedisCacheConfiguration.defaultCacheConfig()
        .entryTtl(Duration.ofMinutes(30))
        .disableCachingNullValues();

    // L1: Caffeine
    CaffeineCacheManager localCache = new CaffeineCacheManager();
    localCache.setCaffeine(Caffeine.newBuilder().maximumSize(500));

    return new CompositeCacheManager(
        localCache,
        RedisCacheManager.builder(factory).cacheDefaults(redisConfig).build()
    );
}

⚠️ 注意:Spring Cache 默认不支持自动写穿透,需手动控制。


七、实际开发中的推荐做法(Best Practices)

场景推荐做法
🔑 缓存键设计使用 业务:ID 格式,如 user:1001
🧩 缓存粒度缓存单个对象,避免缓存大集合
🔄 缓存更新使用 @CacheEvict 删除缓存,不要用 @CachePut 强制更新
🚫 空值处理对于不存在的数据,缓存 null 并设置短过期时间(防穿透)
📦 序列化Redis 使用 GenericJackson2JsonRedisSerializer(保留类型)
🧯 缓存雪崩设置随机过期时间(如 30±5 分钟)
🔍 缓存击穿结合互斥锁或逻辑过期
📊 监控记录缓存命中率,目标 > 90%
🧪 测试单元测试中可通过 @TestConfiguration 替换为 ConcurrentMapCacheManager

八、注意事项与常见问题

问题原因解决方案
❌ 缓存不生效未加 @EnableCaching 或方法在同类中调用(this 调用)启用注解,避免内部调用
❌ key 冲突多参数未指定 key使用 SpEL 显式定义 key
❌ null 值不缓存默认 RedisCache 不缓存 null自定义 RedisCacheManager 启用 cache-null-values
❌ 序列化乱码使用了默认 JDK 序列化改用 JSON 序列化
❌ 缓存未更新忘记 @CacheEvict在更新/删除方法上添加清除注解

九、Spring Cloud 场景下的使用建议

在微服务架构中,建议:

  1. 每个服务独立管理自己的缓存
  2. 共享数据通过 API 获取,不直接共享缓存
  3. 使用 Redis 作为分布式缓存统一存储热点数据
  4. 结合 Spring Cloud Bus 或事件总线实现缓存失效通知
  5. 避免缓存雪崩:加入限流(Sentinel)、降级(Hystrix/Resilience4j)

十、总结:spring-boot-starter-cache 使用决策树

是否需要缓存? → 是
├── 是否分布式? → 否 → 使用 Caffeine + @Cacheable
└── 是否分布式? → 是 → 使用 Redis + RedisCacheManager
    └── 是否极致性能? → 是 → 多级缓存(Caffeine + Redis)

十一、附录:完整依赖示例

<!-- 缓存抽象 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<!-- 本地缓存 -->
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>

<!-- 分布式缓存 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

如果你需要,我可以为你提供:

  • GitHub 示例项目(含多级缓存、Redis 集成、单元测试)
  • 缓存工具类封装(CacheService)
  • 缓存命中率监控方案
  • 面试题整理(Spring Cache 相关)
Spring Boot 核心机制与实战:从自动装配到 MySQL、Redis、Security 集成 在 Java Web 开发领域,Spring Boot 通过其核心机制——自动装配(Auto-Configuration)和 Starter 依赖,极大地简化了企业级应用的构建与部署流程。自动装配的原理在于,框架根据项目引入的依赖和现有配置,智能地装配所需的 Spring Bean,实现了“约定大于配置”的理念。这一机制的技术价值在于,它将开发者从繁琐的 XML 配置和依赖管理中解放出来,显著提升了开发效率,并确保了应用的生产就绪性。其应用场景广泛覆盖了 Web 服务、数据访问、缓存和安全认证等现代应用的核 阅读详情

相关推荐

Spring Boot内核深度解析:自动配置、Starter与Actuator原理

Spring Boot作为Java微服务开发的事实标准,其核心价值在于‘约定优于配置’的工程化实现。它通过条件化自动配置(@Conditional系列注解)动态装配Bean,依托Starter机制封装标准化依赖契约,并借助Actuator暴露生产级运行时指标。这些能力并非黑盒魔法,而是基于Spring容器生命周期、Environment属性绑定、ConditionEvaluator评估链等底层机制协同工作。理解自动配置的加载顺序、Starter的三层结构(契约/实现/适配)、Actuator端点的安全暴露策

weixin_30570101的博客 390

【SpringBoot整合缓存】-----spring-boot-starter-cache篇

缓存在企业级应用主要作用是信息处理,当需要读取数据时,由于受限于数据库的访问效率,导致整体系统性能偏低。 ​ 应用程序直接与数据库打交道,访问效率低​ 为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数据在内存中保存,读写速度较快,可以有效解决数据库访问效率低下的问题。这一块临时存储数据的区域就是缓存。使用缓存后,应用程序与缓存打交道,缓存与数据库打交道,数据访问效率提高。​ 缓存是什么?缓存是一种介于数据永久存储

Learning_xzj的博客 9455

Spring Boot自动装配与Starter机制详解

自动装配是Spring框架的核心特性之一,它通过智能检测类路径和条件判断,自动配置应用程序所需的组件。这种机制大幅减少了手动配置的工作量,是'约定优于配置'理念的典型实现。在工程实践中,Spring Boot通过Starter机制进一步简化了依赖管理,将相关技术栈的依赖和自动配置打包成开箱即用的模块。开发者只需引入对应的starter依赖,就能快速集成Web开发、数据访问等功能。自动装配与Starter机制的配合,使得Spring Boot应用能够快速搭建且保持高度灵活性,特别适合微服务架构和云原生应用的开

weixin_30514745的博客 560

Spring Boot 缓存

Spring Boot 缓存 缓存 缓存是一种提高应用程序性能的方式。它储存在应用和持久数据库之间。高速缓存储存之前使用过的数据,以便尽可能减少数据库的调用。 优点 将通常会重复使用的数据缓存是一个非常有效的提高应用程序速度的方法。我们将频繁请求的数据存在内存中,以避免在用户每次需要数据时都要调用高消耗的服务后端。来自内存的数据访问确实比来自数据库、文件系统等存储的数据访问或其他服务调用要快。 缓存和缓冲区之间的区别 缓存 缓冲区 使用最近使用方案 使用先进先出方案 长寿命 短寿命

ljinest 1805

cache-spring-boot-starter:基于spring cloud bus + rabbitmq + caffeine, 可以自动更新集群内所有同服务实例的内存缓存

cache-spring-boot-starter 介绍 基于spring cloud bus + rabbitmq + caffeine, 可以自动更新集群内同服务所有实例的内存缓存 使用说明 1. 添加依赖 <dependency> <groupId>com.github.dzy5639313</groupId> <artifactId>cache-spring-boot-starter</artifactId> <version>1.0.0-RELEASE</version> </dependency> 2. 配置参数 spring: rabbitmq: password: port: host: username: 3. 代码中使用 // 和Caffeine的使用方式相同 private Cache<String,

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

Spring Boot 缓存 Cache 入门

Spring Boot 缓存 Cache 入门

爱笑的boy的博客 2860

UNITY2022 Cardboard环境搭建

必须安装 Git,并且 git 可执行文件必须位于 PATH 环境变量中。考文档:https://developers.google.cn/cardboard/develop/unity/quickstart?转到 Assets/Samples/Google Cardboard//Hello Cardboard/Scenes/HelloCardboard 场景中。粘贴https://github.com/googlevr/cardboard-xr-plugin.git到文本输入字段中。

weixin_39510925的博客 1210

Spring boot 之 spring-boot-starter-cache (整合redis)

一,Spring缓存抽象 Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发; Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各种...

MrLee的博客 1万+

华为硬件逻辑岗笔试题(一)

积少成多,集腋成裘,坚持!!! 目录 1. 进制转换 2. 状态机和编码方式 3. 存储器的分类 4. Verilog语法中的操作符 5. 对组合逻辑的认识 6. 对时序逻辑的认识 7. 竞争冒险的认识 8. 基本时序逻辑电路 9. 建立时间和保持时间 10. 同步时序电路 11. 组合逻辑和时序逻辑判断 13. 基本总线的理解 14.加法器 15.FPGA开发工具 1. 进制转换 1、十进制46.25对应的二进制表达式为( )。 A 101110.11...

qq_42235129的博客 1万+

西门子交换机环网冗余设置(实战篇2.2)

MRP的重组时间为 200ms 因此 PROFINET 通信必须选择大于 200ms 的看门狗时间,看门狗。ET200SP默认为 2ms*3=6ms) MRP 的重组时间为 200ms 故系统会报出看门狗超时。更新,默认是 3 个周期,超出设置的周期数就会报 IO 设备故障。时间不是直接配置的,而是作为没有 IO 数据可接受的更新周期,也就是允许几个周期没有数据。来达到大于 200ms 的看门狗时间的要求(看门狗时间 可接受更新周期数 更新时间)。是IO 控制器和 IO 设备)

weixin_42580591的博客 363

spring-boot-starter-cache缓存管理器详解:支持的后端缓存框架介绍

它本身并不实现任何特定的缓存框架,而是作为一个抽象层,允许你在不同的缓存技术之间轻松切换。这意味着你可以选择不同的后端缓存技术,并且 Spring Boot 会为你自动配置相应的缓存管理器。要启用特定的缓存技术,你需要在你的项目中引入相应的 Starter 依赖。例如,如果你想使用 Redis 作为缓存后端,你需要添加。属性来显式指定缓存类型,但通常情况下,Spring Boot 会根据你添加的依赖自动选择合适的缓存类型。一旦添加了这些依赖,Spring Boot 会自动配置合适的缓存管理器。

学亮编程手记 8700

用户行为数据分析 User Behavior Data from Taobao for Recommendation

一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859,

cccxxxqq的博客 5205

4、redisson-spring-boot-starter 的介绍和与 Spring Boot 集成使用

Redisson是一个基于Redis的分布式Java对象和服务框架,而redisson-spring-boot-starter是其官方提供的Spring Boot集成模块,简化了在Spring生态中使用Redis高级功能的方式。该starter支持自动配置Redisson客户端,提供分布式锁、限流器、队列等高级功能,并完美集成Spring Cache。通过简单的配置即可实现单机、哨兵、集群等多种Redis部署模式。开发者只需添加依赖并配置application.yml,即可通过注入RedissonClien

python15397的博客 1610

Linux系统监控实战:夜莺监控+categraf采集器配置全流程(附常见问题排查)

本文详细介绍了在Linux系统中使用夜莺监控和categraf采集器进行系统监控的全流程配置,包括环境准备、核心配置文件(如config.toml和procstat.toml)详解、服务集成与验证、高级监控配置实战以及常见问题排查。通过实战案例和优化建议,帮助运维人员快速构建高效的监控体系。

xray4的博客 734

基于51单片机的电子记分牌的设计

基于51单片机的电子记分牌的设计 电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图(2)软件设计3 设计原理分析3.1 电源、复位、下载电路的设计(见图1、2、3)3.2 时钟电路的设计3.3 矩阵键盘电路的设计3.4 数码管显示电路设计4程序代码 摘要 本设计为电子记分牌设计,是以STC89C52芯片为核心,辅以必要电路设计进行的。用4位LED七段数码管显示比赛两方的分数(每方分数用2位

行走的皮卡丘 2036

Redisson Spring Boot Starter 引入后 Actuator 类缺失:依赖链路与修复路径

``` Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/actuate/metrics/redis/RedisCacheMetrics at org.redisson.spring.cache.RedissonCacheMeterBinderProvider.<init> at org.

gitblog_00289的博客 930

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9496

第 4-4 课:Spring Boot 中使⽤ Cache 缓存的使⽤

我们知道绝⼤多数的⽹站/系统,最先遇到的⼀个性能瓶颈就是数据库,使⽤缓存做数据库的前置缓存,可以 ⾮常有效地降低数据库的压⼒,从⽽提升整个系统的响应效率和并发量。 以往使⽤缓存时,通常创建好缓存⼯具类,使⽤时将对应的⼯具类注⼊,操作⼯具类在前端处理缓存的逻 辑。其实这种⽅式是低效的,⼤部分使⽤缓存的场景是基于数据库的缓存,这类缓存场景的逻辑往往是:如 果缓存中存在数据,就从缓...

qq_34227896的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Redisson与Spring Boot集成方案对比与实践

Redis作为高性能内存数据库,在分布式系统中扮演着关键角色,其Java客户端Redisson提供了分布式锁、限流器等高级功能。Spring Boot通过自动配置简化了应用开发,与Redisson集成时存在原始依赖和Starter两种方案。原始依赖方式灵活性高,适合需要精细控制的场景;而Starter方案开箱即用,大幅降低配置复杂度。理解分布式锁原理与连接池优化等关键技术,能帮助开发者在微服务架构中实现可靠的Redis集成,满足高并发场景下的性能需求。

weixin_34275734的博客 338

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redisson Spring Boot 集成报 NoClassDefFoundError?3 个配置让应用 10 分钟恢复启动

Redisson 是一个 Redis/Valkey 的 Java 客户端,提供分布式锁、分布式集合、原子计数器、限流器等 50 多种分布式对象,其 Spring Boot Starter 用一行依赖就能接入 Spring Data Redis。但不少项目会在启动时遇到这样一幕:应用直接起不来,日志里堆满 `NoClassDefFoundError`,分不清是 Redisson 的问题还是 Spri

gitblog_00261的博客 827

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Redisson Spring Boot Starter依赖冲突实战:从Actuator报错到架构级解决方案

在微服务架构快速发展的今天,Redis作为高性能的内存数据库已成为分布式系统的标配。Redisson作为Java生态中最强大的Redis客户端之一,提供了超过60种分布式Java对象和服务。然而,当开发者在Spring Boot项目中集成Redisson Spring Boot Starter时,经常会遇到令人头疼的Actuator依赖冲突问题,导致应用启动失败或运行时出现`NoClassDefF

gitblog_00499的博客 735

Redisson Spring Boot Starter 报 NoClassDefFoundError?从排除传递依赖到接管自动配置的 3 级排障

Spring Boot 集成 Redisson 时,`NoClassDefFoundError` 或 `ClassNotFoundException` 多由 spring-data 模块与 Spring Boot 版本错位引发。本文按"排除传递依赖 → 锁定版本 → 接管自动配置"三级递进给出处置手段,并附版本矩阵与依赖树核对方法,帮助快速定位并防止复发。 ## 症状速查:10 秒对号入座 不

gitblog_00647的博客 951

Java入门到精通-38 Spring Boot入门——自动配置、核心注解与Starter机制

摘要 本文介绍了Spring Boot的核心概念与快速入门指南。Spring Boot通过自动配置、Starter依赖和内嵌服务器等特性,大幅简化了Spring应用的开发流程。主要内容包括: Spring Boot概述:解释其"约定优于配置"理念,对比传统Spring开发的繁琐配置 核心特性:自动配置、Starter依赖管理、内嵌服务器等 项目创建:通过Spring Initializr快速生成项目结构 关键配置:分析pom.xml的依赖管理和启动类注解 快速开发:演示如何创建简单的REST接口 Sprin

weixin_56693899的博客 468

spring-boot-starter-thymeleaf 避坑

spring-boot-starter-thymeleaf 避坑指南 第一步:pom配置环境 先不要管包是做什么的 总之必须要有 否则进坑 1 <!--避坑包--> 2 <dependency> 3 <groupId>net.sourceforge.nekohtml</groupId> 4 ...

Swanyf 1542

《SpringBoot 3:入门与应用实战》第 5 章 使用 Spring Boot 阅读笔记 9

《SpringBoot 3:入门与应用实战》第 5 章 使用 Spring Boot 阅读笔记 9

道友 353
上一篇: 1、数据库的事务隔离级别和事务传播机制
下一篇: 4、redisson-spring-boot-starter 的介绍和与 Spring Boot 集成使用
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值