第1章 spring介绍

为了降低 Java 开发的复杂性, Spring 采取了以下 4 种关键策略:

  • 基于 POJO 的轻量级和最小侵入性编程;

  • 通过依赖注入和面向接口实现松耦合;

  • 基于切面和惯例进行声明式编程;

  • 通过切面和模板减少样板式代码

sping应用上下文

Spring 自带了多种类型的应用上下文。下面罗列的几个是你最有可能遇到的。

  • AnnotationConfigApplicationContext :从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。

  • AnnotationConfigWebApplicationContext :从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。

  • ClassPathXmlApplicationContext :从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。

  • FileSystemXmlapplicationcontext :从文件系统下的一个或多个 XML 配置文件中加载上下文定义。

  • XmlWebApplicationContext :从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。

bean的生命周期

正如你所见,在 bean 准备就绪之前, bean 工厂执行了若干启动步骤。我们对图 1.5 进行详细描述:

1 . Spring 对 bean 进行实例化;

2 . Spring 将值和 bean 的引用注入到 bean 对应的属性中;

3 .如果 bean 实现了 BeanNameAware 接口, Spring 将 bean 的 ID 传递给 setBean-Name() 方法;

4 .如果 bean 实现了 BeanFactoryAware 接口, Spring 将调用 setBeanFactory() 方法,将 BeanFactory 容器 实例传入;

5 .如果 bean 实现了 ApplicationContextAware 接口, Spring 将调用 setApplicationContext() 方法,将 bean 所在的应用上下文的引用传入进来;

6 .如果 bean 实现了 BeanPostProcessor 接口, Spring 将调用它们的 post-ProcessBeforeInitialization() 方法;

7 .如果 bean 实现了 InitializingBean 接口, Spring 将调用它们的 after-PropertiesSet() 方法。类似地,如果 bean 使用 init-method 声明了初始化方法,该方法也会被调用;

8 .如果 bean 实现了 BeanPostProcessor 接口, Spring 将调用它们的 post-ProcessAfterInitialization() 方法;

9 .此时, bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;

10 .如果 bean 实现了 DisposableBean 接口, Spring 将调用它的 destroy() 接口方法。同样,如果 bean 使用 destroy-method 声明了销毁方法,该方法也会被调用。

spring模块

 

Spring Web Flow

Spring Web Flow 建立于 Spring MVC 框架之上,它为基于流程的会话式 Web 应用(可以想一下购物车或者向导功能)提供了支持。我们将在第8 章讨论更多关于 Spring Web Flow 的内容,你还可以访问 Spring Web Flow 的主页( http://projects.spring.io/spring-webflow/ )。

Spring Web Service

虽然核心的 Spring 框架提供了将 Spring bean 以声明的方式发布为 Web Service 的功能,但是这些服务是基于一个具有争议性的架构(拙劣的契约后置模型)之上而构建的。这些服务的契约由 bean 的接口来决定。 Spring Web Service 提供了契约优先的 Web Service 模型,服务的实现都是为了满足服务的契约而编写的。本书不会再探讨 Spring Web Service ,但是你可以浏览站点 http://docs.spring.io/spring- ws/site/ 来了解更多关于 Spring Web Service 的信息。

Spring Security

安全对于许多应用都是一个非常关键的切面。利用 Spring AOP , Spring Security 为 Spring 应用提供了声明式的安全机制。你将会在第 9 章看到如何为应用的 Web 层添加 Spring Security 功能。同时,我们还会在第 14 章重新回到 Spring Security 的话题,学习如何保护方法调用。你可以在主http://projects.spring.io/spring-security/ 上获得关于 Spring Security 的更多信息。

Spring Integration

许多企业级应用都需要与其他应用进行交互。 Spring Integration 提供了多种通用应用集成模式的 Spring 声明式风格实现。我们不会在本书覆盖 Spring Integration 的内容,但是如果你想了解更多关于 Spring Integration 的信息,我推荐 Mark Fisher 、 Jonas Partner 、Marius Bogoevici 和 Iwein Fuld 编写的《 Spring Integration in Action 》( Manning , 2012 , www.manning.com/fisher/ );或者你还可以访问 Spring Integration 的主页 http://projects.spring.io/spring-integration/

Spring Batch

当我们需要对数据进行大量操作时,没有任何技术可以比批处理更胜任这种场景。如果需要开发一个批处理应用,你可以通过 Spring Batch ,使用 Spring 强大的面向 POJO 的编程模型。Spring Batch 超出了本书的范畴,但是你可以阅读 Arnaud Cogoluegnes 、 Thierry Templier 、 Gary Gregory 和 Olivier Bazoud 编写的《 SpringBatch in Action 》( Manning , 2012 , www.manning.com/templier/ ),或者访问 Spring Batch 的主页 http://projects.spring.io/ spring-batch/ 。

Spring Data

Spring Data 使得在 Spring 中使用任何数据库都变得非常容易。尽管关系型数据库统治企业级应用多年,但是现代化的应用正在认识到并不是所有的数据都适合放在一张表中的行和列中。一种新的数据库种类,通常被称之为 NoSQL 数据库 [2] ,提供了使用数据的新方法,这些方法会比传统的关系型数据库更为合适。不管你使用文档数据库,如 MongoDB ,图数据库,如 Neo4j ,还是传统的关系型数据库, Spring Data 都为持久化提供了一种简单的编程模型。这包括为多种数据库类型提供了一种自动化的 Repository 机制,它负责为你创建 Repository 的实现。我们将会在第 11 章看到如何使用 Spring Data 简化 Java Persistence API ( JPA )开发,然后在第 12 章,将相关的讨论拓展至几种 NoSQL 数据库。

Spring Social

社交网络是互联网领域中新兴的一种潮流,越来越多的应用正在融入社交网络网站,例如 Facebook 或者 Twitter 。如果对此感兴趣,你可以了解一下 Spring Social ,这是 Spring 的一个社交网络扩展模块。不过, Spring Social 并不仅仅是 tweet 和好友。尽管名字是这样,但 Spring Social 更多的是关注连接( connect ),而不是社交( social )。它能够帮助你通过 REST API 连接 Spring 应用,其中有些 Spring 应用可能原本并没有任何社交方面的功能目标。限于篇幅,我们在本书中不会涉及 Spring Social 。但是,如果你对 Spring 如何帮助你连接 Facebook 或 Twitter 感兴趣的话,可以查看网址 https://spring.io/guides/gs/accessing- facebook/ 和 https://spring.io/guides/gs/accessing-twitter/ 中的入门指南。

Spring Mobile

移动应用是另一个引人瞩目的软件开发领域。智能手机和平板设备已成为许多用户首选的客户端。 Spring Mobile 是 Spring MVC 新的扩展模块,用于支持移动 Web 应用开发。

Spring for Android

与 Spring Mobile 相关的是 Spring Android 项目。这个新项目,旨在通过 Spring 框架为开发基于 Android 设备的本地应用提供某些简单的支持。最初,这个项目提供了 Spring RestTemplate 的一个可以用于 Android 应用之中的版本。它还能与 Spring Social 协作,使得原生应用可以通过REST API 进行社交网络的连接。本书中,我不会讨论 Spring for Android ,不过你可以通过 http://projects.spring.io /spring-android/ 了解更多内容。

Spring Boot

Spring 极大地简化了众多的编程任务,减少甚至消除了很多样板式代码,如果没有 Spring 的话,在日常工作中你不得不编写这样的样板代码。Spring Boot 是一个崭新的令人兴奋的项目,它以 Spring 的视角,致力于简化 Spring 本身。Spring Boot 大量依赖于自动配置技术,它能够消除大部分(在很多场景中,甚至是全部) Spring 配置。它还提供了多个 Starter 项目,不管你使用 Maven 还是 Gradle ,这都能减少 Spring 工程构建文件的大小。在本书即将结束的第 21 章,我们将会学习 Spring Boot 。

原文地址:https://www.cnblogs.com/xuzhen97/p/9287201.html