- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 SpringBoot源码分析(六):SpringApplication详细解析第五部分(总结和最佳实践)
/ 1. 启动准备// 2. 环境准备// 3. 上下文创建// 4. 上下文准备// 5. 上下文刷新// 6. 启动后处理})// 排除不需要的自动配置@Component@OverrideSystem.out.println("应用开始启动...");@OverrideSystem.out.println("应用启动完成,耗时: " + timeTaken.toMillis() + "ms");// 自定义配置// 添加初始化器。
2025-10-19 12:00:55
661
原创 SpringBoot源码分析(五):SpringApplication详细解析(4)
预编译优化原生镜像支持启动速度提升AOT支持:预编译优化和原生镜像支持Bootstrap机制:早期初始化和共享资源配置钩子机制:运行时扩展和测试支持监控指标:启动时间统计和性能收集条件化加载:延迟初始化和条件化配置扩展机制:丰富的扩展点和定制化能力性能优化:多种性能优化特性这些高级特性使SpringApplication成为一个功能强大、高度可扩展的应用启动框架,能够满足各种复杂场景的需求。
2025-10-18 15:05:25
878
原创 SpringBoot源码分析(四):SpringApplication详细解析(3)
> sources;});return;内部辅助类:Augmented、Running、PropertySourceOrderingBeanFactoryPostProcessor等工具方法。
2025-10-18 14:59:18
549
原创 SpringBoot源码分析(三):SpringApplication详细解析(2)
启动准备:创建指标、注册钩子、准备引导上下文环境准备:创建和配置环境、处理属性源上下文创建:根据应用类型创建相应的应用上下文上下文准备:设置环境、应用初始化器、加载Bean定义上下文刷新:执行Spring容器的完整刷新过程启动后处理:调用Runner、记录启动信息、发布事件异常处理:完善的错误处理和报告机制这个流程确保了Spring Boot应用能够正确、高效地启动,同时提供了丰富的扩展点和监控能力。下一部分预告:SpringApplication分析 - 第三部分:辅助类和工具方法。
2025-10-18 14:57:03
703
原创 SpringBoot源码分析(二):SpringApplication详细解析第一部分(基础结构)
包路径文件位置总行数: 1841行主要职责: Spring Boot应用的启动和引导基础结构:类的职责、使用方式和核心字段构造函数:初始化流程和主应用类推断机制静态方法:便捷的启动和退出方法属性配置:丰富的配置选项和定制能力设计模式:多种设计模式的综合运用这些基础结构为Spring Boot应用提供了强大而灵活的启动能力,是整个Spring Boot框架的核心入口点。下一部分预告:SpringApplication分析 - 第二部分:启动流程详解。
2025-10-18 14:56:00
542
原创 SpringBoot源码分析(一):项目结构梳理
│ ├── servlet/ # Servlet自动配置。│ ├── mongodb/ # MongoDB自动配置。│ │ ├── tomcat/ # Tomcat集成。│ │ ├── jetty/ # Jetty集成。├── web/ # Web自动配置。
2025-10-18 12:36:43
846
原创 使用spring security时不进logout方法的原因分析
Spring Security 默认会拦截 /logout(POST)请求,使用 LogoutFilter 处理登出,例如清除 session、删除 Remember-me、触发 LogoutSuccessHandler 等。如果你没有 .logout().disable(),LogoutFilter 仍然存在,而某些第三方库或自定义配置可能让它匹配所有方法。但如果你没有显式 禁用登出功能(.logout(logout -> logout.disable())),
2025-10-08 20:27:59
977
原创 Feign中使用LocalDateTime时遇到的问题
Feign 在 Spring Cloud 环境下,默认底层使用 Jackson 进行 JSON 的反序列化,但这个过程不是 Feign 直接做的,而是通过 Spring 提供的 HTTP 消息转换器(HttpMessageConverter) 来完成的。如果你没做任何配置,Feign 使用的是 JacksonDecoder(来自 feign-jackson 模块)Feign 默认使用自己的解码器,可能没有使用 Spring 的 ObjectMapper。
2025-10-08 19:13:49
741
原创 Oracle根据备份表还原时缺失默认值的问题
还原后的表xxx就没有默认值了,新增数据时就会存在问题。这时备份表xxx_240430已经没有默认值了。
2024-04-30 15:21:57
229
1
原创 访问接口很慢,报504 Gateway Time-out,排查记录
频繁使用的大表,达到_small_table_threshold 阀值后,因为仍有大量数据在buffer cache,不会立即触发Direct path read,但是如果遇到其他大表挤占了buffer cache,buffer cache块数低于50%,就满足了触发条件。随着记录数的不断增加,达到了某些条件后(下文会提到),就会使用direct path read,频繁的磁盘读就会造成存储的巨大压力,出现严重的性能问题。我遇到的这个问题,大概率就是fastcgi_read_timeout超时了。
2024-04-19 14:18:09
2140
1
原创 使用设计模式改写if/else或switch/case语句
相比传统的if/else语句,使用策略模式后代码体现出了面向对象的特性,扩展性更强,但是还是存在一些缺陷,需要一个map,而且需要new出每个实现类的实例。APPLE("苹果", "apple"), PINEAPPLE("菠萝", "pineapple"), PEAR("梨", "pear");System.out.println("又酸又甜的菠萝");System.out.println("又酸又甜的菠萝");System.out.println("又酸又甜的菠萝");
2023-09-19 17:22:55
1948
2
原创 java 值传递简单分析(以String和pojo对象举例)
Java新手可能有点不太明白这个的原理,很多用Java多年的老手,可能平时主要是写业务代码,然后平时呢,也不爱看书,不注重基础的童鞋,可能也不明白这个的原理。这样是否就明白了,在run方法进行str = "cd"的操作根本就不会影响到main方法中的str所指向的值。这样是不是就一目了然了,str与user的结果表现不一样的原因也就在这里了。有的童鞋可能会懵逼,有的童鞋可能觉得这个太简单了吧,这还要单独写一篇文章。所以,我要是问你这个其中的原理,为什么会是这样,你能答上来吗。大家觉得输出会是怎样的呢?
2023-09-19 17:18:50
467
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅