zoukankan      html  css  js  c++  java
  • 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或版本信息。

  • 相关阅读:
    福建90后大学生陈贺的果园梦
    95后女孩穿旗袍走红,老手艺在淘宝迎来不一样的改变
    动态创建完整功能的图片元素
    jquery 插入dom
    它会选择相对于span的所有div父元素
    表单过滤器之checkbox
    匹配所有的最后一个子元素
    docker 常用指令
    splice操作
    当《连线》说“第一台值得买的智能电视终于出现”时,你信不信?
  • 原文地址:https://www.cnblogs.com/doit8791/p/8594323.html
Copyright © 2011-2022 走看看