Fork me on GitHub
BangjinHu's Blog

让优秀成为习惯,让知识成为信仰


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 本站搜索

Mybatis

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 Mybatis
字数统计: 170 | 阅读时长 ≈ 1

注意:所有文章除特别说明外,转载请注明出处.

深入浅出Mybatis技术原理与实战

[TOC]

第2章 Mybatis入门

2.2 Mybatis基本构成

1. SqlSessionFactoryBuilder:构造器,它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)。

2. SqlSessionFactory:依靠工厂来生成SqlSession(会话)。两种方式创建:xml配置和Java实现。

3. SqlSession:是一个既可以发送sql去执行并返回结果,也可以获取Mapper的接口。类似于一个JDBC的connection对象。

4. SQL Mapper:它是Mybatis新设计的组件,它是由一个Java接口和XML文件构成的,需要给出对应的SQL和映射规则。

SpringMVC 源码分析与实战

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC 源码分析与实战
字数统计: 1,464 | 阅读时长 ≈ 5

注意:所有文章除特别说明外,转载请注明出处.

第2章 常用的协议与标准

在JavaWeb中常用的协议包括DNS协议,TCP/IP协议,HTTP协议和JavaWeb开发中的Servlet。

2.1 DNS协议

该协议的作用是将域名解析为IP。我们将域名发过去,然后域名服务器就能够给我们返回相应的IP,在win中可以使用命令 nslookup 命令查看DNS解析的结果。

2.2 TCP/IP协议与Socket

IP协议是用来查找地址的,对应着网际互联层,其只负责找到地址。TCP协议是用来规范传输规则的,对应着传输层,完成货物的传输工作。TCP在传输之前会进行三次沟通(三次握手),传完数据断开的时候要进行四次沟通(四次挥手)。

阅读全文 »

Executor框架

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 多线程与并发
字数统计: 1,526 | 阅读时长 ≈ 6

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第十章 Executor框架

Java的线程既是工作单元,也是执行机制。所以在JDK 1.5 之后将工作单元和执行机制分离开,工作单元包括 Runnable 和 Callable ,执行机制由 Executor 框架提供。

Executor 管理多个异步任务的执行,而无需程序员显式地管理线程的生命周期。这里的异步是指多个任务的执行互不干扰,不需要进行同步操作。

10.1 Executor 框架简介

10.1.1 Executor 框架的两级调度模型

在上层,Java多线程程序通常将应用分解为若干个任务,然后使用用户级的调度器(Executor框架)将这些任务映射为固定数量的线程。

阅读全文 »

Java并发编程实战

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 多线程与并发
字数统计: 1,114 | 阅读时长 ≈ 4

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第十一章 Java并发编程实战

11.1 生产者和消费者模式

提示:生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。

生产者和消费者彼此之间不直接通信,而是通过阻塞队列来进行通信,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列中取。所以这里的阻塞队列相当于一个缓冲区,平衡生产者和消费者的处理能力。

阅读全文 »

SpringMVC组件分析

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC源码分析
字数统计: 467 | 阅读时长 ≈ 2

注意:所有文章除特别说明外,转载请注明出处.

第11章 SpringMVC组件分析

11.1 HandlerMapping

它的作用是根据request找到相应的处理器Handler和Interceptors。在HandlerMapping接口中只有一个方法:HandlerExceptionChain getHandler(HttpServletRequest request);

11.2 HandlerAdapter

HandlerAdapter理解为干活的人。在它里面有三个方法:1.supports(Object handler),判断是否可以使用某个Handler。2.handle()方法是用来具体使用Handler干活。3.getLastModified()方法是获取最后一个修改的时间。

11.3 HandlerExceptionResolver

在SpringMVC中专门处理异常情况的。此组件的作用是根据异常设置ModelAndView,然后交给render()方法进行渲染。render负责将ModelAndView渲染成页面。该组件HandlerExceptionResolver结构中只有一个方法,只需要从异常中解析出ModelAndView。

11.4 ViewResolver

该组件是将String类型视图名和Locale解析成View类型的视图。ViewResolver接口只有一个方法:View resolveViewName(String viewName, Locale locale);

阅读全文 »

HandlerMapping

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC
字数统计: 3,331 | 阅读时长 ≈ 15

注意:所有文章除特别说明外,转载请注明出处.

第12章 HandlerMapping

[TOC]

HandlerMapping的作用是通过request查找Handler和Interceptors。HandlerMapping包括继承AbstractUrlHandlerMapping和继承AbstractHandlerMapping,这两支都继承抽象类AbstractHandlerMapping。

12.1 AbstractHandlerMapping

AbstractHandlerMapping是HandlerMapping抽象实现。其采用模板模式设计了HandlerMapping实现的整体结构。子类通过模板方法提供初始值或者具体算法即可。这种模式是:首先使用一个抽象实现采用模板模式进行整体设计,然后在子类通过实现模板方法具体实现业务。

HandlerMapping的作用是是通过request查找Handler和Interceptors。获取Handler的过程通过模板方法getHandlerInternal()交给子类。AbstractHandlerMapping中保存了所有的配置Interceptor,在获取Handler后会自己根据从request中获取的lookupPath将相应的Interceptor装配。子类也可以如此。

阅读全文 »

HandlerAdapter

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC
字数统计: 3,171 | 阅读时长 ≈ 13

注意:所有文章除特别说明外,转载请注明出处.

第13章 HandlerAdapter

[TOC]

HandlerMapping通过request找到Handler,而HandlerAdapter是具体使用Handler来干活的。每个HandlerAdapter封装了一种Handler的具体使用方法。HandlerAdapter结构中有5个Adapter,其中只有RequestMappingHandlerAdapter有两层,而其它的只有一层,是直接实现HandlerAdapter接口。同时其中的有一个类已经弃用,所以只有4类Adapter,5个类。

提示:在HandlerAdapter的接口中只有三个方法:1.判断是否支持传入Handler。2.使用Handler处理请求。3.获取资源的LastModified值。

13.1 RequestMappingHandlerAdapter

RequestMappingHandlerAdapter适配器是与RequestMappingHandlerMapping配合使用的。

阅读全文 »

ViewResolver

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC源码分析
字数统计: 3,482 | 阅读时长 ≈ 15

注意:所有文章除特别说明外,转载请注明出处.

第14章 ViewResolver

阅读全文 »

Spring设计框架与设计模式

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 Spring
字数统计: 1,457 | 阅读时长 ≈ 5

注意:所有文章除特别说明外,转载请注明出处.

第13章 Spring框架的设计理念与设计模式分析

[TOC]

13.1 Spring的骨骼架构

Spring的核心组件只有三种:Core | Context | Bean。其构建起整个Spring骨骼架构,没有它们就不可能有AOP | Web等上层的特性功能。

13.1.1 Spring的设计理念

Spring解决非常关键的问题,它可以让我们将对象之间的依赖关系转而用配置文件来管理,也就是依赖注入机制。而这个注入关系由Ioc容器中管理。

我们知道Bean包装的是Object,而Object必然有数据,而Context要解决的是数据的生存问题,发现每个Bean之间的关系。所以Context是一个Bean关系的集合,这个关系集合又叫Ioc容器。Core就是发现、建立和维护每个Bean之间的关系所需要的一些列工具。

13.2 核心组件

13.2.1 Bean组件

Spring Bean的创建是典型的工厂模式,它的顶级接口是BeanFactory。BeanFactory有三个子类:1. ListableFactory 2. HierarchicalBeanFactory 3. AutowireCapacleBeanFactory。但最终的默认实现类都是 DefaultListableBeanFactory。

定义这么多接口的原因是因为每个接口都有其使用的场合,其主要区分在Spring对象内部对象的转换和传递过程,将对象的数据访问做限制。

1. ListableBeanFactory 表示Bean是可列表的

2. HierarchicalBeanFactory 表示这些Bean是有继承关系的

3. Autowire.. 表示Bean的自动装配规则

Bean的定义主要有BeanDefinition描述。Bean的完整描述了在Spring配置文件中定义节点中所有的信息,包括各种子节点。

提示:Bean的解析过程就是对Spring配置文件的解析。

13.2.2 Context组件

Context在Spring的 org.springframework.context 包下面。ApplicationContext是Context的顶级父类,它除了标识一个应用环境的基本信息之外,还继承了5个接口。

ApplicationContext继承了BeanFactory,说明了Spring容器中运行的主体对象是Bean。另外ApplicationContext继承了ResourceFactory接口,可以访问任何外部资源。

ApplicationContext的子类包含两个方面:

1. ConfigurableApplicationContext 表示该Context可修改,在构建Context用户可以动态添加和修改已有的配置信息,其下面有多个子类,最常使用可更新的Context(AbstractRefreshableApplicationContext类)。

2. WebApplicationContext 表示为Web准备的Context,可以直接访问到ServletContext。

总体来说Context必须完成以下几件事情:

1. 标识一个应用环境

2. 利用BeanFactory创建Bean对象

3. 保存对象关系表

4. 能够捕获各种事件

12.2.3 Core组件

Core组件是Spring的核心组件,包含了很多关键类,一个重要的组成部分是定义了资源的访问方式。

12.2.4 Ioc容器工作过程

1. 创建BeanFacoty工厂

    Ioc容器实际上是Context组件结合其它两个组件共同构建了一个Bean关系网。 


4. Ioc容器

    我们如果需要使用Spring必须要先构建Ioc容器,没有它Spring无法工作,ApplicationContext.xml就是Ioc容器默认配置文件,Spring的所有特性功能都是基于Ioc容器工作的。

13.3 Spring中AOP

13.3.1 动态代理

AOP是基于动态代理实现的。在JDK的java.lang.reflect包下有个Proxy类,是构造代理类的入口。最后一个方法newproxyInstance是创建代理对象的方法。

public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);

1. ClassLoader 用于加载代理类的Loader类,通常这个Loader类和被代理的类是同一个Loader类。

2. interfaces 被代理的那些接口

3. InvocationHandler 用于执行除了被代理类接口中方法之外的用户定义的操作,是用户需要代理的最终目的。用户调用目标方法都被代理到InvocationHandler类中定义的唯一方法invoke()中。

13.3.2 Spring AOP的实现

代理的目的是调用目标方法时可以转而执行InvocationHandler类的invoke()方法,所以如何在InvocationHandler类上做文章便是实现AOP的关键所在。

Spring如何完成代理:

1. 代理类继承了FactoryBean的ProxyFactoryBean,FactoryBeab之所以特别就在于它可以让我们自定义对象的创建方法。

2. Spring在创建代理对象之后,在我们调用目标对象上的方法时,都会被代理到InvocationHandler类的invok()方法中执行。

13.4 设计模式之代理模式

13.4.1 代理模式原理

代理模式就是给某一个对象创建一个代理对象,由这个代理对象控制对原对象的引用,而创建此代理对象后可以在调用原对象时增加一些额外的操作。

1. Subject 抽象主题,它是代理对象的真实对象要实现的接口

2. ProxySubject 代理类,除了实现抽象主题定义的接口外,还必须持有所代理对象的引用

3. RealSubject 被代理的类,是目标对象

13.5 设计模式之策略模式

13.5.1 策略模式原理

表示完成某个操作可能有多种方法,这些方法都可能被使用到,每个实现方法都当做一个实现策略,用户可以根据场景选择合适的策略。

1. Context 不同策略的环境,可根据自身条件选择不同的策略实现类完成所要的操作。

2. Strategy 抽象策略,定义每个策略都要实现的策略方法

3. ConcreteStrategy 具体策略实现类,实现抽象策略中定义的策略方法

13.5.2 Spring中策略模式的实现

Spring中有多个地方用到了策略模式。如:Bean定义对象的创建及代理对象的创建等。

HandlerExceptionResolver

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 SpringMVC源码分析
字数统计: 1,859 | 阅读时长 ≈ 9

注意:所有文章除特别说明外,转载请注明出处.

第16章 HandlerExceptionResolver

阅读全文 »
1…101112…22
Bangjin-Hu

Bangjin-Hu

212 日志
73 分类
73 标签
RSS
GitHub email 微博 知乎 iProgramer_ing
0%
© 2018 — 2020 Bangjin-Hu | Site words total count: 486.7k