Spring框架
文章平均质量分 92
Spring技术:
1. 简化Java的开发
2. 基于POJO轻量级和最小侵入式开发
3. 通过依赖注入和面向接口实现松耦合
4. 基于切面和惯例进行声明式编程
5. 通过切面和模板减少样板式代码
https://zhuanlan.zhihu.com/p/34503752
七海健人
打工战士,闲暇之余把自己的学习和总结记录下,也希望写的东西能帮助到你
展开
-
Spring——事务注解@Transactional的源码分析
本篇结合我的这篇《Spring事务注解@Transactional》,为第二节【2.Spring声明式事务的原理】的详细说明,debug了被@Transactional包裹的目标方法所在类的Bean实例初始化过程,包括:如何判断生成代理对象流程及如何定义代理对象的回调逻辑;...........................原创 2022-07-17 18:21:10 · 3419 阅读 · 1 评论 -
Spring——AOP面向切面编程&SpringAOP与AspectJ比较
最近跟着源码研究了下Spring使用三级缓存处理循环依赖的原理,里面涉及到Spring AOP的概念;本篇介绍AOP相关的知识点,AOP下的概念名词比较多,尽量使用通俗的概念来逐个解释,内容包括:对AOP(面向切面编程)的理解、AOP下的名词概念、Spring AOP与AspectJ的比较等;这部分知识对于学习Spring框架或者面试,都非常重要,需要掌握;...原创 2022-07-09 17:21:31 · 982 阅读 · 0 评论 -
Spring——AOP用到的代理模式&SpringAOP实现原理
AOP,面向切面编程,是Spring框架中的核心思想之一;在Spring中是通过动态代理来实现的,在目标类的基础上增加切面逻辑,对原对象进行增强;SpringAOP的源码中用到了两种动态代理来实现拦截切入功能:JDK动态代理和CGlib动态代理,两种方法的适用条件和效率各有不同,各有优劣;本来准备写一篇关于SpringAOP相关的文章的,这篇文章介绍,作为Spring AOP的基础知识,介绍代理设计模式以及Java中的几种不同的代理模式的实现:静态代理、JDK动态代理和CGlib代理;.........原创 2022-07-04 12:22:53 · 2479 阅读 · 1 评论 -
Spring——@Autowired注解以及与@Resource区别
本篇介绍Spring中注入bean的方式之一@Autowired注解的使用方法;同为注入bean的注解@Resource,比较@Autowired与其在使用上的区别及注意事项;这部分知识也是面试经常会问的知识点,需要掌握;原创 2022-06-28 15:40:46 · 1177 阅读 · 0 评论 -
Spring——循环依赖&三级缓存【建议收藏】
本篇介绍Spring循环引用相关的知识点,包括:循环引用的基本概念、Spring的Bean创建流程、三级缓存解决循环依赖问题、源码调试分析及流程归纳、循环依赖是否一定能被三级缓存解决,最后还给了个特殊的例子并分析三级缓存为什么有时不能解决AOP+循环引用的问题,阅读前建议对SpringBean要有一定背景知识;..........................................原创 2022-06-25 22:21:36 · 1883 阅读 · 3 评论 -
编码技巧——事务提交后执行
日常开发中,一些诸如"先读后写"、"先写A再写B"、"先写A再执行B"的场景,一般都会用到事务;这里的事务指的是本地事务,如果涉及RPC,一般我们通过异步补偿来保证最终一致性;本篇例举2个使用事务"先写A再执行B"的场景;原创 2022-05-13 22:56:32 · 2055 阅读 · 3 评论 -
Spring——事务注解@Transactional【建议收藏】
在某些业务场景下,如果一个请求中,需要同时写入多张表的数据或者执行多条sql,为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到事务;Spring框架下,我们经常会使用@Transactional注解来管理事务;本篇介绍Spring的事务注解@Transactional相关的知识,包括事务简介、事务隔离级别、Spring声明式事务实现原理、事务的传播行为、@Transactional的用法及注意事项等,属于Spring的常用注解之一,需要掌握相关知识点;...原创 2022-07-18 16:05:40 · 35717 阅读 · 3 评论 -
编码技巧——重试模板RetryTemplate
本篇介绍Spring RetryTemplate的原理及使用的代码示例;日常开发中,经常会遇到这样的场景:执行一次接口调用,如RPC调用,偶现失败,原因可能是dubbo超时、连接数耗尽、http网络抖动等,出现异常时我们并不能立即知道原因并作出反应,可能只是一个普通的RpcException或RuntimeException,对于这种小概率的异常,往往需要尝试再次调用(前提是接口是幂等的),因为由于网络问题、下游服务暂时的不稳定导致的异常,段时间后理论上是可以自恢复的;原创 2022-04-20 16:05:44 · 4898 阅读 · 0 评论 -
《Spring》实战——5.SpringMVC
Day_041. 早期的Web架构在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1:出现的弊端:JSP和JavaBean之间严重耦合,Java代码和HTML代码也耦合在了一起; 要求开发者不仅要掌握Java,还要有高超的前端水平;正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,早期的 MVC 模型(Model2)就像下图这样原创 2022-03-27 12:11:52 · 358 阅读 · 0 评论 -
《Spring》实战——4.Spring&数据库JDBC
Day_031. 数据持久化数据持久化:就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称;(数据库记录-对象)2. 存在问题必须初始化数据访问框架、打开连接、处理各种异常和关闭连接。如果上述操作出现任何问题,都有可能损坏或删除的企业数据; JDBC中的SQLException;可能导致抛出SQLException的常见问题包括:应用程序无法连接数据库; 要执行的查询存在语法错误; 查询中所使用的表和/或列不存在; 试图插入或更新的数据原创 2022-03-27 12:06:23 · 1127 阅读 · 0 评论 -
《Spring》实战——3.面向切面&AOP
Day_02前言在软件开发中,散布于应用中多处的功能被称为横切关注点(crosscutting concern)。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往会直接嵌入到应用的业务逻辑之中)。把这些横切关注点与业务逻辑相分离正是面向切面编程(AOP)所要解决的问题。DI有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦;1. AOP?AOP 即 Aspect Oriented Program 面向切面编程;首先,在面向切原创 2022-03-27 12:01:54 · 304 阅读 · 0 评论 -
《Spring》实战——2.IOC/DI&装配
Day_01Bean的定义与装配;(XML、Config.java、自动装配 3种方式)1. 自动装配(注解)-推荐Spring从两个角度来实现自动化装配:(1)组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。(2)自动装配(autowiring):Spring自动满足bean之间的依赖。定义bean?(1)先定义组件(bean)类的接口(为了解耦);(2)然后在实现类的类声明上面加一句注解@Component,则这个原创 2022-03-25 13:34:27 · 186 阅读 · 0 评论 -
《Spring》实战——1.Spring核心思想
Spring学习前Spring是一个开源框架;(更形象的说,是一种思想,核心就是IOC/DI和AOP);1. 几个概念及简写?POJO,Plain Old Java Object,简单老式Java对象;(例如一个具备某种功能的普通的Java类); 组件,Component,Spring用JavaBean来表示”组件”,理论上这个bean可以是任意形式的Java类(POJO),不一定非得遵守JavaBean规范; DI,Dependency Injection,依赖注入;即将对象(Bean原创 2022-03-25 13:24:41 · 524 阅读 · 0 评论