手撕spring
文章平均质量分 63
LQW_home
Java开发
展开
-
spring ioc容器启动流程
public class MainTest {public static void main(String[] args) {ApplicationContext applicationContext = newClassPathXmlApplicationContext(“applicationContext.xml”);}}public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, @Nu原创 2021-10-08 21:36:02 · 121 阅读 · 0 评论 -
手撕 spring cache 自定义spring cacheManager和cache
缓存 可以提高访问速度,对高性能、高并发有一定的治疗效果。缓存从存储位置可以分为 JVM级别缓存,进程级别缓存。JVM级别缓存优点:访问速度最快;缺点:不能实现分布式缓存,因为每个节点都是一个单独的JVM实例,所以各个节点的缓存不可见,会导致缓存不一致。进程级别缓存优点:保证缓存一致性,因为进程级别的缓存 相当于一个缓存服务器,各个节点都去同一个缓存服务器取数据,所以缓存一致性有保证。进程级别缓存缺点:IO消耗,相对慢于JVM级别缓存,但还是比数据库查询快。Spring 对 cache 进行了抽象原创 2020-07-10 16:50:02 · 1719 阅读 · 0 评论 -
spring cache实现一二级缓存
spring cache 抽象了cache,具体的实现可以随意组合。由于ConcurrentMapCache没有失效时间,虽然他是JVM最近的缓存,但用不好会是jvm很耗内存。所以退而求其次使用了caffeine(咖啡因缓存)这样可以实现进程缓存(有牛人可以解释下,我不是很明白什么是进程内缓存)。线面是spring整合caffeine缓存实现一二级缓存。 自定义缓存实现 public class MapCaffeCache implements Cache {// private Concu原创 2020-07-08 15:05:30 · 1072 阅读 · 0 评论 -
自己手撕一个spring ioc容器
用那么多年spring,一直对spring容器是如何实现的感到神秘,今天自己手撕一个spring ioc容器 感觉很简单,适合入门理解。主要用到xml的解析 和 反射public class BeanUtil { private static Map<String, Object> beans = new HashMap<String, Object>(); private static void parse() { // 获取项目根路径下的配置文件 .原创 2020-07-01 10:56:51 · 207 阅读 · 1 评论