IOC容器和缓存(struts2)

1说明:这里以Struts2的IOC和缓存简述,侧重讲缓存。 编写方式不是"手把手式",需要结合struts2源码或熟读过源码的人,强烈建议阅读者需要有哈希算法基础,jvm内存知识和java并发编程相关知识的读者。
2.表达能力有限,有出处的忘包含或指证。
3.目的:分享

一 、首先上图:
图1. struts2_IOC容器_构造器缓存_关联过程

这里写图片描述

图2. struts2_构造器缓存实现
这里写图片描述

二、进入struts2缓存世界,以ContainerImpl.java中的
@SuppressWarnings(“unchecked”)
ConstructorInjector getConstructor(Class implementation) {
return constructors.get(implementation);
}
方法为主线展开。

下面以注释和代码的方式贴出来 >>>>>>>>>>>

  >>>>>ReferenceCache以ConstructorInjector存取过程进行简述:
	一、存储:ConstructorInjector
	1.通过key从缓存中取实例对象ConstructorInjector,	它存储于ReferenceMap.java类成员属性:
			ConcurrentMap<Object, Object> delegate = new ConcurrentHashMap<Object, Object>();中,
	2.使用了一个策略模式来存储键值对(K-V)到delegate中,例如:
		delegate.put(keyReference, valueReference);
	(2.1)其中keyReference被包装成强,软,弱类型(这三种类型的划分,使得每种类型都有自己的特性,
	便于jvm对内存达到更精准的维护),关于这三种引用类型可以查阅一些内存相关的书籍,这里就不敖述。
	Object referenceKey(K key) {
    switch (keyReferenceType) {
      case STRONG: return key;
      cas
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值