Spring全家桶
未读
聊聊@Transactional注解和事务的使用
本文探讨了@Transactional注解和事务的使用。首先介绍了事务的概念和Spring中事务管理的两种方式:编程式和声明式。重点分析了声明式事务的优缺点,包括其粒度问题、易被忽略的问题以及失效场景。最后详细介绍了@Transactional注解的属性和失效场景,如非public方法、错误的propagation设置、错误的rollbackFor设置、类中方法调用、异常被catch、final和static方法以及数据库引擎不支持事务等。
Spring全家桶
未读
浅析Spring中AOP的实现原理——动态代理
本文深入解析了Spring框架中AOP的实现原理,重点探讨了动态代理的应用。文章首先介绍了Spring AOP的实现原理,通过JDK动态代理和CGLib动态代理两种方式,详细阐述了各自的原理、优缺点及适用场景。接着,通过代码示例验证了Spring在类实现接口时使用JDK动态代理,在类没有实现接口时使用CGLib动态代理。最后,文章还介绍了如何通过配置强制Spring使用CGLib进行AOP代理。
Spring全家桶
未读
Autowried和Resource注解总结
本文深入探讨了Spring框架中的`@Autowired`和`@Resource`注解,分析了它们在依赖注入(DI)中的使用方法、区别以及解决冲突的策略。`@Autowired`默认按类型注入,支持多种注入方式,并推荐使用构造方法注入;而`@Resource`则默认按名称注入,更适合需要明确指定资源名称的场景。两者在解决依赖注入冲突方面各有特点,`@Autowired`通过`@Qualifier`和`@Primary`注解,而`@Resource`则通过显式指定名称或字段名/方法名作为Bean名称。在Spring应用中,`@Autowired`是首选,而在需要跨框架移植或明确指定资源名称时,`@Resource`可能更合适。