第一篇--第1章 Spring 概述

第 1 章 Spring 概述

本章主要内容:

  • 认识 Spring
  • Spring 体系及文档结构
  • Spring 4.0 新特性
  • Spring 子项目介绍

1.1 认识 Spring

​Spring 是分层的 Java SE/EE 应用一站式的轻量级开源框架,以 IoC(Inverse of Control,控制反转) 和 AOP (Aspect Oriented Programming,切面编程)为内核,提供了展现层 Spring MVC、持久层 Spring JDBC 及业务层事务管理等一站式的企业级应用技术。

​此外还整合了很多第三方框架和类库。

1.2 关于 SpringSource

​ Spring 创始人创立的一个商业公司,后来被收购并发布了 Spring Framework 4.0 版本。

1.3 Spring 带给我们什么

  • 方便解耦,简化开发。

通过 Spring 提供的 IoC 容器来管理对象间的依赖关系,避免过度耦合

  • AOP 编程的支持
  • 声明式事务的支持
  • 方便程序的测试,相对于 EJB 容器
  • 方便集成其他框架
  • Java 源码是经典的学习范例

1.4 Spring 体系结构

整个框架大致可以划分为 5 个模块:
Spring框架结构图

1. IoC

Spring 核心模块实现了IOC的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IoC容器负责依赖类之间的创建、拼接、管理、获取等工作。

BeanFacotry接口是Spring框架的核心接口,它实现了容器的许多核心功能。

2. AOP

AOP是进行横切逻辑编程的思想,Spring还整合了AspectJ这种AOP语言级的框架。

3. 数据访问和集成

Spring封装了对各种类型数据的访问操作,如数据库(Oracle、MySQL)、Elasticsearch、Redis等。

首先:在DAO层,建立一套统一的异常体系,将各种访问数据的检查型异常转换为非检查型异常;

其次:通过模板化技术对各种数据访问技术进行薄层封装,将模板化的代码隐藏起来。

这样就简历了和数据形式及访问技术无关的统一的DAO层,借助AOP技术,提供了声明式事务的功能。

4. Web及远程操作

Spring整合了很多著名的框架,如Struts、WebWork等MVC框架,还有WebService和WebSocket技术的支持。

1.5 Spring对Java版本的要求

Spring4.0 —> Java6.0, 全面支持8.0

1.6 Spring4.0新特性

1.6.1 全面支持Java8

Lambda表达式支持,REST风格Web开发,全面支持java8,支持重复注解(多个一模一样的注解)

1.6.2 核心容器增强

  • 泛型依赖注入:为子类的成员变量注入泛型类型。
public abstract class BaseService<M extends Serializable> {
    @Autowired
    protected BaseDao<M> dao;
    ...
}

@Component
public interface UserDao<User> {
}

@Service
public class UserService extends BaseService<User> {
    
}
  • Map依赖注入
@Autowired
private Map<String, BaseService> map;

上述协防将BaseService类型的对象注入map中, key是Bean的名字, value是实现了BaseService类的Bean.

  • @Lazy延迟依赖注入
@Lazy
@Service
public class UserService extends BaseService<User> {
}

也可以把@Lazy放在@Autowired之上, 即依赖注入也是可以延时的, 当调用userService时才会注入; 同样适用于@Bean.

  • List注入
@Autowired
private List<BaseService> list;

这样可以注入所有实现了BaseService的 Bean 类, 无序的; 如果需要排序:

@Order(value = 1)
@Service
public class UserService extends BaseService<User> {
}

1.6.3 支持用Groovy定义Bean

1.6.4 Web的增强

引入新的@RestController控制器注解, 方便REST开发.

1.6.5 支持WebSocket

1.7 Spring子项目

列举几个:
[Spring子项目]

发布了14 篇原创文章 · 获赞 0 · 访问量 745

猜你喜欢

转载自blog.csdn.net/JasonWeng/article/details/103773343