2018第11周总结

这周主要关注了Spring IOC AOP事务相关的内容,以及工作中经常会用到你缓存和消息队列。

Spring IOC是最重要的基础,这里要知道它是如何管理bean的生命周期和作用域,以及给用户留了哪些扩展点。 

Spring中Bean的生命周期从大方面讲是定义创建实例——》初始化——》使用——》销毁,Spring在初始化后BeanFactory实例化后,就加载Bean定义(xml配置、注解或Java配置文件)配置,依次生成每个类对应Bean的单例对象,然后填充对象属性(包括注入依赖对象,此时若依赖对象还没创建,会尝试先创建并初始化依赖Bean对象后再继续当前bean实例的初始化),然后开始bean对象的初始化,此处用户可以通过@PostConstruct、继承InitializingBean类或指定init-method的方法自定义自己的初始化方法(如果上面上个方法同时存在,会以@PostConstruct、继承InitializingBean类或指定init-method方法的次序依次执行)。注意:@PostConstruct能起作用,必须在bean配置前启用注解,可以通过配置<context:annotation-config/>或<context:component-scan base-package="com.imooc.service" />实现。 

 

在IOC容器基础上扩展,定义目标类bean的代理bean,通过它实现对目标类bean的增强处理操作。具体SpringAOP实现有JDK动态代理和Cglib代理两种方式,默认用JDK动态代理,但它要求目标类必须要实现接口,在目标类没实现接口的情况下使用Cglib代理,它使用继承目标类动态生成子类的方式实现,因此它不能对final修饰的类代理。
AOP切面的核心是定义做什么及什么时候做,对应在Spring中配置一个advisor需要定义引用advice和pointcut。

不是所有的方法都要事务,如只有一条修改操作(一条增删改sql语句)或只读操作不需要事务控制。并且要注意尽量让事务的方法执行时间短,不要在其中穿插其它RCP、HTTP网络操作,若需要可将其剥离到事务方法外部。

Spring通过AOP代理实现事务,所以要求某个方法事务起作用必须要从外部其它bean对象中调用才行,被自身bean方法调用的话事务不起作用。
 与传统单机事务严格遵守ACID原则不同,柔性事务遵守BASE理论,通常用在分布式环境下,常见的实现方式有:两阶段提交(2PC)、TCC补偿性提交,基于消息的异步确保型,最大努力通知型。

 

Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。

 

使用消息队列的最终目的是通讯,本质是解耦生产者消费者依赖,一般用在异步处理、解耦、错峰、流量控制等场景。

 

 最后说两个方法:

1、离线API管理工具,mac下dash,Windows可用zeal代替,https://zealdocs.org/download.html 

2、eclipse中添加maven依赖或插件的方法。pom文件中右键-》maven-》添加依赖或插件对话框中可用搜索到maven仓库中的依赖和插件,选择后可插入,不用再去其它pom文件或网上找具体GAV或版本信息。

 

 

posted on   时间朋友  阅读(200)  评论(0编辑  收藏  举报

编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
历史上的今天:
2017-03-18 项目经理与产品经理的区别
2016-03-18 如何做一个好的前端重构工程师
2015-03-18 2015第12周三
2014-03-18 2014第12周二学习记
2013-03-18 2013年3月18日星期一

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示