第一章 深入Web请求过程
用户在浏览器输入一个网址,整个过程是URL通过DNS域名解析成IP地址,然后向这个IP地址的服务器发起GET请求。(经过服务器负载)服务器返回数据给浏览器,当浏览器解析到一些静态资源时,又会发起另外的HTTP请求,再次经过DNS解析,(如果存在)返回给浏览器最近的CDN节点。
发起一个请求:解析成IP,根据IP和默认端口80与远程服务器建立socket连接,然后根据这个URL组装成一个GET类型的HTTP请求(outputStream.write())发送到目标服务器,目标服务器接收(inputStream.read),然后再返回数据,连接断开。
DNS域名解析过程:1.浏览器缓存 2.本机hosts文件 3.本地区域名服务器(LDNS)4.LNDS访问ROOT Server 5.LNDS拿到ROOT Server返回的主域名服务器(gTLD),去请求gTLD 6.LDNS拿到gTLD返回的Name Server去请求Name Server 7.Name Server查询域名和IP的映射关系表,返回目标IP给LDNS 8.LDNS返回给用户
第十三章 Spring框架的设计理念与设计模式分析
Spring的三大核心组件:Context、Core、Bean
我们为什么用Spring?因为Spring解决了一个非常关键的问题,它可以让你把对象之间的依赖关系转而用配置文件来管理,也就是它的依赖注入机制。而这个注入关系在一个叫IOC的容器中管理。在这个IOC容器中,就是被Bean包裹的对象们。Spring正是通过把对象包装在Bean中从而达到管理这些对象以及一系列额外操作的目的
核心组件如何协同工作?Bean包装Object,而Object必然有数据,Context为这些数据提供生存环境(提供运行时环境,用以保存各对象状态),并且要发现每个Bean之间的关系,并维护好这些Bean的关系。所以Context就是一个Bean关系的集合,这个关系集合又叫IOC容器。而Core组件就是一系列的工具,帮你去发现、建立和维护Bean之间的关系。Core更贴切的说应该是个Util工具类。
-
Bean组件
Bean组件在Spring的org.springframework.beans包下,在这个包下的所有类主要解决3件事,Bean的定义,创建,解析。
Bean的创建:它的顶级接口是BeanFactory,典型的工厂模式
Bean的定义:主要由BeanDefinition描述
Bean的解析:Bean的解析非常复杂,功能被分的很细,Bean的解析主要就是对Spring配置文件的解析。 -
Context组件
ApplicationContext是Context的顶级父类,它除了能标识一个应用环境的基本信息外,还继承了5个接口,用于扩展Context的功能。Application继承了BeanFactory,说明了Spirng容器中运行的主体对象是Bean,另外ApplicationContext继承了ResourceLoader接口,使得ApplicationContext可以访问任何外部资源。
ApplicationContext的子类主要包含两个方面:
· CpnfigurableApplicationContext:表示该Context是可修改的,其中最经常使用的是可更新的Context,即AbstractRefreshableApplicationContext类
· WebApplicationContext:顾名思义就是为Web准备的Context
总体来说ApplicationContext必须要完成以下几件事
· 标识一个应用环境
· 利用BeanFactory创建Bean对象
` 保存对象关系表
· 能够捕获各种事件
Context作为Spring的IOC容器,基本上整合了Spring大部分功能,或者说是大部分功能的基础 -
Core组件
Core包含了很多关键类,其中很重要的一个就是定义了资源的访问方式(提供和加载资源标准,以接口定义的方式)。
网友评论