- 浏览: 513334 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
场景:checkForAliasCircle(name, alias);
this.aliasMap.put(alias, name);
A,B
B,C
当准备存入 C, A时,执行checkForAliasCircle 检验是否 构成key-value循环
代码实现检测方式:
public class SimpleAliasRegistry implements AliasRegistry {
/** Map from alias to canonical name */
private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16);
/**
* Determine the raw name, resolving aliases to canonical names.
* @param name the user-specified name
* @return the transformed name
*/
public String canonicalName(String name) {
String canonicalName = name;
// Handle aliasing...
String resolvedName;
do {
resolvedName = this.aliasMap.get(canonicalName);
if (resolvedName != null) {
canonicalName = resolvedName;
}
}
while (resolvedName != null);
return canonicalName;
}
/**
* Check whether the given name points back to given alias as an alias
* in the other direction, catching a circular reference upfront and
* throwing a corresponding IllegalStateException.
* @param name the candidate name
* @param alias the candidate alias
* @see #registerAlias
*/
protected void checkForAliasCircle(String name, String alias) {
if (alias.equals(canonicalName(name))) {
throw new IllegalStateException("Cannot register alias '" + alias +
"' for name '" + name + "': Circular reference - '" +
name + "' is a direct or indirect alias for '" + alias + "' already");
}
}
this.aliasMap.put(alias, name);
A,B
B,C
当准备存入 C, A时,执行checkForAliasCircle 检验是否 构成key-value循环
代码实现检测方式:
public class SimpleAliasRegistry implements AliasRegistry {
/** Map from alias to canonical name */
private final Map<String, String> aliasMap = new ConcurrentHashMap<String, String>(16);
/**
* Determine the raw name, resolving aliases to canonical names.
* @param name the user-specified name
* @return the transformed name
*/
public String canonicalName(String name) {
String canonicalName = name;
// Handle aliasing...
String resolvedName;
do {
resolvedName = this.aliasMap.get(canonicalName);
if (resolvedName != null) {
canonicalName = resolvedName;
}
}
while (resolvedName != null);
return canonicalName;
}
/**
* Check whether the given name points back to given alias as an alias
* in the other direction, catching a circular reference upfront and
* throwing a corresponding IllegalStateException.
* @param name the candidate name
* @param alias the candidate alias
* @see #registerAlias
*/
protected void checkForAliasCircle(String name, String alias) {
if (alias.equals(canonicalName(name))) {
throw new IllegalStateException("Cannot register alias '" + alias +
"' for name '" + name + "': Circular reference - '" +
name + "' is a direct or indirect alias for '" + alias + "' already");
}
}
发表评论
-
使用Spring+Junit+Mockito做代码自测
2019-05-29 15:27 503源:https://blog.csdn.net/z19917 ... -
BeanCopier系列之一:特性测试
2018-06-12 12:15 430源:http://czj4451.iteye.com/ ... -
Lombok 之 ToString
2018-03-20 19:35 650源:http://himichaelchu.iteye.com ... -
extends和super的区别
2018-01-14 19:05 588源:http://bbs.csdn.net/topics/38 ... -
double转BigDecimal,数变大
2017-09-09 14:02 610源:http://blog.csdn.net/linbrain ... -
在同一个类中调用另一个方法没有触发 Spring AOP 的问题
2017-08-24 17:22 574源:https://segmentfault.com/a/11 ... -
Spring Transaction属性之Propagation
2016-08-10 17:09 546源:http://blog.csdn.net/kiwi_cod ... -
Oracle模糊查询之(4.采用全文索引解决模糊查询,给出具体步骤)采用全文索引解决模糊查询速度慢的问题[主文]
2016-03-24 16:16 850源:http://blog.csdn.net/haiross/ ... -
理解和正确使用Java中的断言(assert)
2016-03-24 15:55 1075源:http://blog.csdn.net/leic ... -
Spring的Quartz定时器同一时刻重复执行二次的问题解决
2016-03-11 18:27 1001源:http://www.linuxidc.com/Linux ... -
string stringbuffer stringbuilder区别
2016-03-07 15:39 452string 是不可变类,内部数据结构为final char数 ... -
spring factory-method
2016-03-01 11:22 485源:http://blog.sina.com.cn/s/blo ... -
spring中lazy-init详解
2016-02-29 17:01 776源:http://blog.csdn.net/fhx0 ... -
Spring Refresh Application Context
2015-12-13 14:48 861源:http://techdive.in/spring/spr ... -
接口和抽象类有什么区别
2015-11-27 15:58 433源:http://m.blog.csdn.net/bl ... -
Java中Enum类型的序列化
2015-11-25 14:57 1234源:http://mysun.iteye.com/blog/1 ... -
serialVersionUID的作用
2015-11-08 15:27 579源:http://www.cnblogs.com/gu ... -
dom4j写xml时&会被转义成&的解决方法?
2015-09-08 20:52 982源:http://www.iteye.com/problems ... -
java ImageIO处理图像的封装
2015-09-06 10:17 364源:http://blog.csdn.net/hu_sheng ... -
XML 和 java对象相互转换
2015-08-17 16:45 0源:http://hbiao68.iteye.com/blog ...
相关推荐
Spring源码最难问题:当Spring AOP遇上循环依赖 Spring源码中最难的问题之一是循环依赖问题,当Spring AOP遇上循环依赖时,该如何解决? Spring通过三级缓存机制解决循环依赖的问题。 在Spring中,bean的实例化...
Spring循环依赖debug源码图
最后,我们可以看到 Spring 的源码实现中,doCreateBean() 方法是处理循环依赖的核心部分。在该方法中,Spring 会先进行引用的提前暴露,然后再进行属性填充,从而避免了循环依赖的出现。 本篇文章详细分析了 ...
Spring5.0源码深度解析之SpringBean循环依赖问题解决方案 Spring5.0源码深度解析之SpringBean循环依赖问题解决方案是指在Spring框架中如何解决Bean的循环依赖问题。在Spring框架中,Bean的循环依赖指的是两个或多个...
《spring源码之循环依赖和三级缓存》整理,本人水平有限,从网上找的资料整合之后做的,请辩证的看待其中内容。
在Spring框架中,动态代理是实现AOP(面向切面编程)的核心机制,它允许我们在不修改原有代码的情况下,对方法进行增强。然而,在实际应用中,如果配置不当或者类结构设计复杂,可能会遇到动态代理导致的循环依赖...
文章目录准备工作关闭循环依赖开始调试AbstractBeanFactory#doGetBeangetSingleton(String beanName, ...Spring默认在单例、非构造方法注入的情况下是支持循环依赖的。 准备工作 原创文章 94获赞 13访问量 5539
在Spring框架中,循环依赖和AOP代理是两个核心概念,它们在实际应用中经常相遇并需要被妥善处理...掌握这些知识,可以说你在Spring源码的掌握上已经达到了较高的水平,甚至可以与阿里巴巴等大型企业的技术要求相媲美。
对于非懒加载的Bean,Spring会检测到循环依赖并尝试解决,例如,通过`earlySingletonObjects`存储部分已创建但未完全初始化的Bean,然后在完整初始化时处理循环依赖。 2. **Spring的版本与源码解析** 在本手册中,...
spring源码底层分析(1.81G)〖课程介绍〗:Spring启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供...
当检测到循环依赖时,Spring会先尝试从一级缓存中获取bean,如果找不到,就从二级缓存中获取预初始化的bean实例,若还不能满足需求,则进行实例化并填充属性,同时放入二级缓存。最后,当所有依赖都满足后,才将bean...
2. **属性注入(setter方法)的循环依赖**:Spring可以在Bean实例化后,但在属性填充前检测并解决。Spring通过提前暴露一个“半成品”Bean(即只实例化但未注入属性的对象)来打破循环依赖。当检测到循环依赖时,会...
在Spring Boot应用中,MyBatis作为持久层框架与Spring Boot整合时,有时会在启动过程中遇到循环依赖的问题。本文将深入探讨这个问题的原因及其解决方案。 首先,让我们了解问题的背景。在开发过程中,开发者为了...
`DefaultListableBeanFactory`中的`resolveDependency`方法是处理依赖查找的关键,包括其内部的`doResolveDependency`方法,用于检测和解决循环依赖问题。 4. AOP实现 AOP是Spring框架的重要组成部分,它允许我们...
16 Spring源码阅读register方法.mp4 17 源码阶段性总结.mp4 18 Spring源码阅读refresh-preareRefresh.mp4 19 Spring源码阅读refresh-obtainFreshBeanFactory.mp4 20 Spring源码阅读refresh-prepareBeanFactory....
16 Spring源码阅读register方法.mp4 17 源码阶段性总结.mp4 18 Spring源码阅读refresh-preareRefresh.mp4 19 Spring源码阅读refresh-obtainFreshBeanFactory.mp4 20 Spring源码阅读refresh-prepareBeanFactory....
16 Spring源码阅读register方法.mp4 17 源码阶段性总结.mp4 18 Spring源码阅读refresh-preareRefresh.mp4 19 Spring源码阅读refresh-obtainFreshBeanFactory.mp4 20 Spring源码阅读refresh-prepareBeanFactory....
16 Spring源码阅读register方法.mp4 17 源码阶段性总结.mp4 18 Spring源码阅读refresh-preareRefresh.mp4 19 Spring源码阅读refresh-obtainFreshBeanFactory.mp4 20 Spring源码阅读refresh-prepareBeanFactory....
spring ioc 源码解析图,全网最细、最全的源码解析讲解,关于spring bean创建过程原理解析、循环依赖原理解析等等等
"Spring源码分析" 在 Spring 框架中,Bean 对象的创建过程是一个复杂的过程,涉及到多个步骤和接口。下面将对 Spring 源码中 Bean 对象的创建过程进行分析和解释。 1. 创建工厂,到达 BeanDefinition 步骤 在 ...