首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/xuaijun/2835501

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

Alibaba面试题:谈谈Spring用到了哪些设计模式?

前言 前几天,一位读者面阿里被问到一个问题:Spring框架用到了哪些设计模式?,答得不是很好,于是打算写篇文章讲讲这个!代理模式 所谓代理,是指它与被代理对象实现了相同的接口,客户端必须通过代理才能与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理,比如在调用这个方法前做前置处理,调用这个方法后做后置处理。 代理又分为静态代理和动态代理两种方式,Spring的AOP采用的是动态代理的方式 Spring通过动态代理对类进行方法级别的切面增强,动态生成目标对象的代理类,并在代理类的方法中设置拦截器,通过执行拦截器中的逻辑增强了代理方法的功能,从而实现AOP。策略模式 我们前面讲到,Spring AOP是通过动态代理来实现的。 具体到代码实现,Spring支持两种动态代理实现方式,一种是JDK提供的动态代理实现方式,另一种是Cglib提供的动态代理实现方式。 Spring会在运行时动态地选择不同的动态代理实现方式。这个应用场景实际上就是策略模式的典型应用场景。 我们只需要定义一个策略接口,让不同的策略类都实现这一个策略接口。对应到Spring源码,AopPr...

【Java技术探索】ThreadLocal深入浅出的源码分析(核心源码)

每日一句 一个人的成功不取决于他的智慧,而是毅力。 基本介绍 ThreadLocal是对Thread内部的局部变量ThreadLocalMap的维护类。当线程持有多个ThreadLocal的操作时,会在ThreadLocalMap中通过key进行寻找。 每个Thread里面维护了一个ThreadLocal.ThreadLocalMap变量,底层存储结构为Entry[],ThreadLocal实例作为ThreadLocalMap的key,set/get的值为Map的value,其中,key的引用为弱引用。 当执行ThreadLocal.set时,实际是将ThreadLocal对象和值通过key-value的形式放进了Thread中的ThreadLocal.ThreadLocalMap属性中,完成了线程隔离存储,保证了线程安全,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 使用场景 ThreadLocal即便你没有直接用到过,它也间接的出现在你使用过的框架里: Spring的事务管理。 Hibernate的会话管理。 logback(和log4j)中的MDC功...

相关文章

发表评论

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册