有很多人想要学习JAVA知识,可能没有时间去整理一些零散的知识点,现在小编整理好了文档,看看下面的详解有没有需要的。
它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring
仍然可以和其他的框架无缝整合。
1.1. Spring 特点
1.1.1. 轻量级
1.1.2. 控制反转
1.1.3. 面向切面
1.1.4. 容器
1.1.5. 框架集合
1.2. Spring 核心组件
1.3. Spring 常用模块
1.4. Spring 主要包
1.5. Spring 常用注解
bean 注入与装配的的方式有很多种,可以通过 xml,get set 方式,构造函数或者注解等。简单易
用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。
1.6. Spring 第三方结合
1.7. Spring IOC 原理
1.7.1. 概念
Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化
Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供
了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。
1.7.2. Spring 容器高层视图
Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配
置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准
备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现
1.7.3. IOC 容器实现
BeanFactory-框架基础设施
BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用
Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层
的 BeanFactory。
1.1…1.1.1 BeanDefinitionRegistry 注册表
它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册
BeanDefinition 对象的方法。
1.1…1.1.2 BeanFactory 顶层接口
返回特定名称的 Bean,BeanFactory 的功能通过其他的接口得到不断扩展:
1.1…1.1.3 ListableBeanFactory
Bean 的配置名、查看容器中是否包括某一 Bean 等方法;
1.1…1.1.4 HierarchicalBeanFactory 父子级联
HierarchicalBeanFactory 接口, Spring 的 IoC 容器可以建立父子层级关联的容器体系,子
容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。Spring 使用父子容器实
现了很多功能,比如在 Spring MVC 中,展现层 Bean 位于一个子容器中,而业务层和持久
层的 Bean 位于父容器中。这样,展现层 Bean 就可以引用业务层和持久层的 Bean,而业务
层和持久层的 Bean 则看不到展现层的 Bean。
1.1…1.1.5 ConfigurableBeanFactory
器初始化后置处理器等方法;
1.1…1.1.6 AutowireCapableBeanFactory 自动装配
1.1…1.1.7 SingletonBeanRegistry 运行期间注册单例 Bean
来说,BeanFactory 会缓存 Bean 实例,所以第二次使用 getBean() 获取 Bean 时将直接从
IoC 容器的缓存中获取 Bean 实例。Spring 在 DefaultSingletonBeanRegistry 类中提供了一
个用于缓存单实例 Bean 的缓存器,它是一个用 HashMap 实现的缓存器,单实例的 Bean 以
beanName 为键保存在这个 HashMap 中。
1.1…1.1.8 依赖日志框框
供 Log4J 配置文件,这样启动 Spring 容器才不会报错。
ApplicationContext 面向开发应用
ApplicationContext 由 BeanFactory 派 生 而 来 , 提 供 了 更 多 面 向 实 际 应 用 的 功 能 。
ApplicationContext 继承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基础
上,还通过多个其他的接口扩展了 BeanFactory 的功能:
ClassPathXmlApplicationContext:默认从类路径加载配置文件13/04/2018 Page 123 of 283
FileSystemXmlApplicationContext:默认从文件系统中装载配置文件
ApplicationEventPublisher:让容器拥有发布应用上下文事件的功能,包括容器启动事
件、关闭事件等。
MessageSource:为应用提供 i18n 国际化消息访问的功能;
ResourcePatternResolver : 所 有 ApplicationContext 实现类都实现了类似于
PathMatchingResourcePatternResolver 的功能,可以通过带前缀的 Ant 风格的资源文
件路径装载 Spring 的配置文件。
用于控制异步处理过程。在具体使用时,该接口同时被 ApplicationContext 实现及具体
Bean 实现, ApplicationContext 会将 start/stop 的信息传递给容器中所有实现了该接
口的 Bean,以达到管理和控制 JMX、任务调度等目的。
的方法: refresh()和 close(),让 ApplicationContext 具有启动、刷新和关闭应用上下
文的能力。在应用上下文关闭的情况下调用 refresh()即可启动应用上下文,在已经启动
的状态下,调用 refresh()则清除缓存并重新装载配置信息,而调用 close()则可关闭应用
上下文。
WebApplication 体系架构
WebApplicationContext 是专门为 Web 应用准备的,它允许从相对于 Web 根目录的
路径中装载配置文件完成初始化工作。从 WebApplicationContext 中可以获得
ServletContext 的引用,整个 Web 应用上下文对象将作为属性放置到 ServletContext
中,以便 Web 应用环境可以访问 Spring 应用上下文。
Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、
request、session 和 global session,5 种作用域说明如下:
singleton:单例模式(多线程下不安全)
Bean 引用它,始终指向同一对象。该模式在多线程下是不安全的。Singleton 作用域是
Spring 中的缺省作用域,也可以显示的将 Bean 定义为 singleton 模式,配置为:
13/04/2018 Page 124 of 283
prototype:原型模式每次使用时创建
一个新的 Bean 实例,每个 Bean 实例都有自己的属性和状态,而 singleton 全局只有一个对
象。根据经验,对有状态的bean使用prototype作用域,而对无状态的bean使用singleton
作用域。
Request:一次 request 一个实例
产生新的 Bean,而且该 bean 仅在当前 Http Request 内有效,当前 Http 请求结束,该 bean
实例也将会被销毁。
session
求则会创建新的实例,该 bean 实例仅在当前 Session 内有效。同 Http 请求相同,每一次
session 请求创建新的实例,而不同的实例之间不共享属性,且实例仅在自己的 session 请求
内有效,请求结束,则实例将被销毁。
global Session
使用 portlet context 时有效。
由于篇幅过长,小编就不为大家做更多的介绍了,希望大家能够仔细品读这篇优质作品,得之,幸之,会让自己提升一个台阶的。
如果大家需要这篇【JAVA核心知识点整理】技术文档的话,就可以转发此文关注小编,私信小编“学习”得到获取方式吧。