Spring基础

Spring 的核心是一个 容器,通常称为 Spring 应用程序上下文,用于创建和管理应用程序组件。这些组件(或 bean)在 Spring 应用程序上下文中连接在一起以构成一个完整的应用程序,就像将砖、灰浆、木材、钉子、管道和电线绑在一起以组成房屋。

依赖注入

将 bean 连接在一起的行为是基于一种称为 依赖注入(DI)的模式。(见显式配置示例)

显式配置

例如,以下 XML 声明两个 bean,一个 InventoryService bean 和一个 ProductService bean,然后通过构造函数参数将 InventoryService bean 注入到 ProductService 中:

1
2
3
4
<bean id="inventoryService" class="com.example.InventoryService" />
<bean id="productService" class="com.example.ProductService" >
<constructor-arg ref="inventoryService" />
</bean>

但是,在最新版本的 Spring 中,基于 Java 的配置更为常见。以下基于 Java 的配置类等效于 XML 配置:

1
2
3
4
5
6
7
8
9
10
11
@Configuration
public class ServiceConfiguration {
@Bean
public InventoryService inventoryService() {
return new InventoryService();
}
@Bean
public ProductService productService() {
return new ProductService(inventoryService());
}
}
  • @Configuration注释向 Spring 表明这是一个配置类,它将为 Spring 应用程序上下文提供 beans
  • @Bean 注释,指示它们返回的对象应作为 beans 添加到应用程序上下文中(默认情况下,它们各自的 bean IDs 将与定义它们的方法的名称相同)

自动配置

仅当 Spring 无法自动配置组件时,才需要使用 Java 或 XML 进行显式配置。

自动配置起源于 Spring 技术,即 自动装配 和 组件扫描。借助组件扫描,Spring 可以自动从应用程序的类路径中发现组件,并将其创建为 Spring 应用程序上下文中的 bean。通过自动装配,Spring 会自动将组件与它们依赖的其他 bean 一起注入。

随着 Spring Boot 的推出,自动配置的优势已经远远超出了组件扫描和自动装配。Spring Boot 自动配置大大减少了构建应用程序所需的显式配置(无论是 XML 还是 Java)的数量。

SpringBoot

Spring Boot 的许多好处

  • 启动依赖项和自动配置
  • Actuator 提供了对应用程序内部工作方式的运行时监控,包括端点、线程 dump 信息、应用程序健康状况和应用程序可用的环境属性
  • 使用Spring Boot CLI,可以将整个应用程序编写为 Groovy 脚本的集合

Spring Data

Spring Data 提供了一些非常惊人的功能:将应用程序的数据存储库抽象为简单的 Java 接口

Spring Data 能够处理几种不同类型的数据库,包括:

  • 关系型(JPA)
  • 文档型(Mongo)
  • 图型(Neo4j)

Spring Security

Spring Security解决了广泛的应用程序安全性需求,包括身份验证、授权和 API 安全性

Spring Integration

Spring Integration 解决了实时集成,即数据在可用时进行处理

Spring Batch

Spring Batch 解决了批量集成的问题,允许在一段时间内收集数据,直到某个触发器(可能是一个时间触发器)发出信号,表示该处理一批数据

Spring Cloud

应用程序开发领域正在进入一个新时代,在这个时代中,我们不再将应用程序作为单个部署单元来开发,而是将由几个称为 微服务 的单个部署单元组成应用程序。