- 博客(19)
- 收藏
- 关注
原创 Spring AOP:从动态代理到核心切面编程
任何模板化、可复用日志记录:无侵入式地获取方法调用时间、入参出参。事务管理 (:业务前自动开启数据库连接,成功则commit提交,报错则自动拦截并rollback回滚。权限检查 (:进入方法前,判定当前用户角色是否合法,不合法直接拦截请求返回 403。性能监控:计算执行耗时,查找系统的慢请求代码。异常处理 (:全局捕获底层各种乱七八糟的异常,统一包装成优雅的 JSON 格式返回给前端。缓存管理 (@Cacheable:进入方法前先查 Redis,查到了直接返回数据不进数据库;查不到再走查库逻辑并存入缓存。
2026-05-28 11:27:46
336
1
原创 Spring AOP 底层逻辑:手写 JDK 动态代理与源码级拆解
无论是还是,我们都没有在其源码里写过一行,但它们在运行时都拥有了日志能力。强制的接口依赖:“JDK 动态代理强制要求,目标对象必有接口,代理的也只是接口规定的方法。底层原理:因为 JDK 动态生成的代理类已经在底层继承了类,而 Java 不支持多重继承,所以代理类只能通过implements实现目标对象的接口,来伪装成目标对象。这也是 Spring 中如果对象没有实现接口,就会自动退化使用 CGLIB 代理的原因。
2026-05-11 12:09:09
325
原创 零基础 Java 实战:一文搞懂“静态代理”与代码解耦
通过引入静态代理模式,我们完美遵守了软件开发中的单一职责原则业务类:这辈子只管计算公式。代理类:这辈子只负责打印日志。解耦带来的好处是巨大的:如果我们今天决定把日志从控制台打印改成写入到本地文件中,只需要修改即可,核心的数学公式代码一行都不需要动,极大降低了引发新 Bug 的风险。
2026-05-07 21:24:04
275
原创 Spring组件生命周期详解 —— 四种常见初始化与销毁方式实战解析
生命周期阶段触发条件或适用方式作用简介构造器new对象时自动调用创建bean实例依赖注入@Autowired注解或set方法注入依赖bean属性赋值属性注入完成后自动调用(JSR-250)业务初始化,比如打开连接、准备资源属性注入完成后调用方法除了,Spring专用初始化方法配置指定的初始化方法用户自定义的初始化回调方法初始化方法之前可以对bean进行修改、替换,比如动态代理初始化方法之后进一步加工bean运行阶段bean正常使用业务逻辑运行容器关闭或bean销毁之前。
2026-04-26 20:50:17
432
原创 Spring属性注入与多环境配置详解实验 | @PropertySource文件注入、资源加载和@Profile环境切换
Data使用加载外部属性文件,配合@Value注入简单配置参数。通过可访问classpath资源文件(图片、文本等),方便静态资源操作。多环境切换通过Spring的@Profile注解轻松控制不同配置Bean的加载,配合修改生效环境。在实际项目中,把不同环境配置分离,避免硬编码是实现高可维护性的关键。
2026-04-25 16:09:04
234
原创 Spring依赖注入与属性赋值详解实验教程 | 从无参构造到@Value动态赋值
Dog dog;System.out.println("===========ioc容器创建完成=========");Dog构造器...===========ioc容器创建完成=========UserDao对象被Spring管理成功实例化。Dog类的无参构造被执行,但Dog并未被注入给UserDao里的dog字段。依赖注入方式:构造器注入(推荐)和Setter注入都可用@Autowired实现,构造器注入优势在于保证依赖的不可变性。精准注入:通过@Qualifier。
2026-04-23 18:30:44
343
原创 Spring自动装配与依赖注入实验详解 —— 从入门到进阶
*** 自动装配流程:* 1. 按照类型找到对应组件;* 1.0 如果只有一个,直接注入(名字无所谓)* 1.1 如果有多个,根据属性名尝试匹配组件名* 1.1.1 找到对应名称,则注入* 1.1.2 找不到,报错!*/
2026-04-23 09:55:49
288
原创 Spring条件化Bean注册全解析 | 自定义@Conditional & @ConditionalOnBean、@ConditionalOnMissingBean、@ConditionalOnRe
在Spring和Spring Boot项目开发中,经常需要根据不同条件动态决定是否注册某个Bean,这样可以让应用灵活适配不同环境、依赖、资源等。本文基于实验九内容,结合自定义操作系统判断的,以及Spring Boot中常用的条件注解,进行代码示例整合和详细对比,帮助你深刻理解它们的使用场景和效果。注解触发条件应用场景注意点指定Bean存在时依赖某组件存在,条件注册。
2026-04-22 21:27:52
1415
原创 实验(九)碎碎念 | Spring条件化Bean注册:基于操作系统环境的动态Bean注入实践
person.setName("乔布斯");person.setGender("男");person.setName("比尔盖茨");person.setGender("男");注解可以标注在@Bean方法或整个类上。如果用在类上,当条件不满足时,该类所有Bean都不会被注册,慎用。系统属性 vs 环境变量和通过os.name系统属性判断,更稳定。如果使用环境变量(如OS),需保证环境变量正确设置且获取方式一致。多环境切换时的策略配合Spring Profiles(
2026-04-18 19:53:12
242
原创 Spring Boot IoC 实验(八)碎碎念 :Spring IoC 中的 Bean 注册与 FactoryBean 使用
本文介绍了两种在Spring容器中注册Car对象的方法:1)使用@Import直接导入类,适合简单Bean的创建;2)通过FactoryBean接口自定义复杂Bean的创建逻辑。实践表明,FactoryBean默认以单例模式创建Bean,且能灵活控制实例化过程。两种方式各具优势,前者适用于简单场景,后者适合需要复杂初始化的对象。代码示例展示了两种方法的实现细节,验证了FactoryBean创建的对象确实是单例实例。
2026-04-18 01:35:01
642
原创 Spring Boot IoC 实践(七):@Lazy 懒加载机制详解及有无懒加载对比
摘要:本文通过代码示例演示SpringBoot中@Lazy注解实现Bean懒加载的效果。对比实验显示:无@Lazy时单例Bean在容器启动时立即初始化;添加@Lazy后Bean延迟到首次调用时才创建。@Lazy能显著提升启动速度,适用于资源消耗大或非高频使用的Bean,是优化大型应用性能的有效手段。文中包含完整代码示例和运行日志对比,直观展示了两种模式下的Bean初始化时机差异。(149字)
2026-04-16 07:58:40
356
原创 Spring Boot IoC 实践(六):@Scope 作用域与单实例、多实例 Bean 原理
摘要:本文深入探讨了Spring IoC容器中Bean的作用域机制,重点分析了singleton和prototype两种常见作用域。通过实际项目演示,验证了singleton(默认)在容器启动时创建单实例,而prototype每次getBean()都会创建新实例的特性。文章详细对比了不同作用域的生命周期、线程安全性及适用场景,并展示了如何通过@Scope注解灵活配置作用域。最后提出了多线程测试和Web环境下的扩展实验建议,帮助开发者更好地理解和应用Spring作用域机制。
2026-04-16 07:58:25
636
原创 Spring Boot IoC 实践(五):@Import 实现外部类装配与多配置整合
本文介绍了SpringBoot中@Import注解的使用方法,重点讲解了如何通过该注解将外部类或配置类导入IoC容器。文章通过项目结构示例展示了AppConfig配置类如何整合外部类,并详细说明了@Import与@ComponentScan的区别。核心内容包括:@Import的基本用法、实现原理,以及在实际开发中的应用场景,如整合第三方框架、模块化配置等。通过启动类验证了外部类成功注册为Bean的过程,帮助开发者掌握SpringBoot依赖注入的扩展能力。
2026-04-15 10:46:26
547
1
原创 Spring Boot IoC 实践(四):@ComponentScan 自动扫描与MVC分层注解实践
在前面的实践中,我们学习过如何通过@Bean在配置类中手动注册组件。但在实际开发中,大多数情况下我们不会手动创建每个 Bean,而是让 Spring Boot自动扫描类上的注解,将标记为组件的类自动注册到 IoC 容器中。这一过程由完成,也是 Spring Boot 最便捷的自动装配基础。如何使用自动扫描包下的组件;理解 MVC 三层常用注解(@Service验证组件是否注册成功。📘用于标记控制层组件。Spring Boot 会自动扫描并将其注册到容器中。内容说明扫描机制由。
2026-04-15 10:39:10
494
原创 Spring Boot IoC 实践(三):配置类注册 Bean 与容器单例验证
在前面的实践中,我们验证过 Spring Boot 容器在启动时会自动创建单例 Bean,并能通过getBean()方法重复获取同一个实例。这次,我们将 Bean 从原来的直接定义方式搬到独立的配置类中(与@BeanDogConfig和。通过这种方式注册组件,更符合企业开发常见的结构,也能更灵活地管理不同 Bean。System.out.println("Dog 无参构造方法执行");🐾普通 Java 类。构造方法打印日志,用来观察 Bean 的创建时机。内容说明Bean 注册方式。
2026-04-14 17:03:38
358
原创 Spring Boot IoC 实践(二):理解 Bean 的创建与容器管理过程
在上一篇文章中,我们初步了解了 Spring Boot 启动时如何创建 IoC(控制反转)容器。Spring Boot 在何时创建 Bean?IoC 容器如何管理 Bean?Bean 是否真的单例?内容说明Bean 创建时机容器启动时创建(单例模式)是否单例是(默认singleton验证方式查看构造方法输出与对象地址获取方式。
2026-04-14 16:39:49
318
原创 Spring Boot 入门(一):理解 IoC 容器与 Bean 管理(附图解)
本篇博客通过简单易懂的 Spring Boot 示例,带你深入理解 IoC(控制反转) 和 DI(依赖注入) 的核心原理。文章展示了 IoC 容器的创建、Bean 的注册与获取方式,并通过多张文字图示清晰解释了 Bean 的装配与依赖注入过程。适合正在学习 Spring Boot 基础或想搞清楚容器到底“帮我们做了什么”的开发者阅读。
2026-04-09 09:39:24
255
原创 Java编程入门:快捷键与基础语法全解析
本文总结了Java基础语法知识,包括常用快捷键、DOS命令、Java程序结构、数据类型、变量常量、运算符等核心内容。重点介绍了八大基本数据类型(整型、浮点型、字符型、布尔型)及其转换规则,演示了强制类型转换的注意事项。详细讲解了各种运算符的使用,包括算术、关系、逻辑、位运算等,并强调了位运算的高效特性。此外,还涵盖了变量作用域、命名规范、JavaDoc文档注释等编码规范。文中通过大量代码示例展示了HelloWorld程序、数据类型转换、运算表达式等基础语法,为Java初学者提供了全面的入门参考。
2026-03-09 21:04:25
75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅