logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

你天天用 Spring 容器,但可能根本不知道它的本质

不是:Map不是:Bean仓库甚至也不是:BeanFactory它真正本质是:对象管理中心,或者对象操作系统因为:它做的不只是,创建对象而是:定义↓创建↓装配↓增强↓生命周期管理↓销毁这才是:Spring 容器真正干的事持续拆 Spring、MySQL、Redis 底层原理,复盘真实线上问题。一起把“会用”变成“看懂”。下一篇:Bean 为什么需要生命周期?90%的人只会背流程感兴趣可以关注,避免

文章图片
#spring#java#后端
为什么 Spring 不建议自己 new 对象?一文彻底搞懂 IOC 本质

这样写有什么问题?对象不是创建出来了吗?代码不是也能跑吗?很多文章会告诉你:“这是为了降低耦合”但其实:这个解释太浅了因为:即使你自己 new,照样也可以通过接口解耦。

文章图片
#spring#java#后端
你天天用 Spring 容器,但可能根本不知道它的本质

不是:Map不是:Bean仓库甚至也不是:BeanFactory它真正本质是:对象管理中心,或者对象操作系统因为:它做的不只是,创建对象而是:定义↓创建↓装配↓增强↓生命周期管理↓销毁这才是:Spring 容器真正干的事持续拆 Spring、MySQL、Redis 底层原理,复盘真实线上问题。一起把“会用”变成“看懂”。下一篇:Bean 为什么需要生命周期?90%的人只会背流程感兴趣可以关注,避免

文章图片
#spring#java#后端
Spring 为什么如此依赖反射?因为它根本不知道你会写什么

所以:@Autowired 并不神秘?Spring 不可能提前写:new UserService(),因为它不知道以后会有什么。也就是:Class,Spring 世界里:很多时候拿着的不是对象,而是:Class。上一篇我们说:Spring 大量黑科技来自:BeanPostProcessor。但处理之前,要先知道:Bean 上有哪些字段、有哪些方法、有哪些注解。因为 Spring 根本不知道你以后会

文章图片
#spring#java#后端
为什么抛了异常,事务还是没回滚?一次 Debug 看懂 Spring 的回滚规则

发生异常↓事务回滚发生异常↓事务拦截器收到异常↓满足回滚规则↓事务回滚try-catch吃掉异常不满足rollbackFor规则ErrorrollbackFor指定异常异常↓↓↓满足规则↓rollback最后留个问题。下面代码会回滚吗?b();很多人觉得一定回滚。这又是为什么?下一篇:《为什么会有循环依赖?Spring 为什么允许两个 Bean 互相引用?

文章图片
#spring#数据库#java
为什么会有循环依赖?Spring 为什么允许两个 Bean 互相引用

所谓循环依赖。A 依赖 BB 依赖 A形成一个闭环。@Service@Autowired@Service@Autowired这种情况就属于循环依赖。很多人觉得:这是代码写错了。实际上在大型项目里非常常见。因为业务之间本来就存在关联。用户查订单。订单查用户。写着写着就形成了依赖闭环。今天我们没有讲三级缓存。而是先定位问题。通过源码可以看到:当 A 创建过程中需要 B。B 创建过程中又需要 A。循环依

文章图片
#spring#java#后端
一个 @RequestMapping 就能接收请求?Spring MVC 是怎么做到的

扫描 Controller↓解析 @RequestMapping↓生成 RequestMappingInfo↓注册到 MappingRegistry请求到达↓↓↓找到 HandlerMethod↓↓执行 Controller 方法↓返回结果所以:@RequestMapping 并不是收到请求时才解析。而是在 Spring 启动时就已经解析完成,并建立好了 URL 和方法的映射关系。请求来了以后,本

文章图片
#spring#mvc#java
第三篇:MyBatis 为什么知道该执行哪条 SQL?

执行时才去找 SQL。实际上不是。启动阶段。MyBatis 已经把所有 SQL 解析完成。保存起来。Mapper接口↓方法名↓生成 statementId↓找到 MappedStatement↓执行 SQL所以:MyBatis 之所以知道该执行哪条 SQL,本质上是因为启动时已经建立好了 Mapper 方法与 MappedStatement 的映射关系。上一篇:《Mapper 接口为什么没有实现类

文章图片
#mybatis#sql#java
第六篇:MyBatis 动态 SQL 为什么能如此灵活?

很多人以为:只是 MyBatis 提供的几个标签,实际上它们背后是一套非常经典的设计。动态SQL↓解析成SQL树↓运行时判断条件↓生成最终SQL↓执行SQL所以:MyBatis 动态 SQL 的核心并不是字符串拼接,而是把 SQL 抽象成一棵可执行的节点树,在运行期间根据参数动态生成最终 SQL。这也是为什么十几年过去了,MyBatis 的动态 SQL 依然没能轻易取代上一篇:《查询结果为什么能自

文章图片
#mybatis#sql#tomcat
第七篇:MyBatis 插件为什么这么强大?一次看懂拦截器机制

MyBatis 插件看起来很神奇。利用 JDK 动态代理,在 SQL 执行链路中插入自定义逻辑。↓↓JDK动态代理↓↓↓↓真实SQL执行MyBatis-Plus 分页插件多租户插件SQL审计插件数据权限插件基本都能看懂了。上篇文章:《MyBatis 动态 SQL 为什么能如此灵活?下篇文章:《为什么很多公司禁用 MyBatis 二级缓存?

文章图片
#sql#数据库#java +1
    共 14 条
  • 1
  • 2
  • 请选择