Spring4.x企业应用开发实战(ch01-03)

92 阅读3分钟

01简介

体系结构

image.png

IOC模块

将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述。IOC容器负责依赖类之间的创建、拼接、管理、获取等工作。BeanFactory 接口是 Spring 的核心接口。Context 模块构建于核心模块之上,扩展了 BeanFactory 功能, ApplicationContext 是 Context 模块的核心接口。表达式语言用于查询和管理运行期的对象,还提供了逻辑表达式运算、变量定义等功能。

AOP模块

AOP是进行横切逻辑的思想。Spring 提供了满足 AOP Alliance 规范的实现,整合了 AspectJ,引入了java.lang.instrument。

数据访问和集成

Spring 建立了一套面向DAO层统一的异常体系,将各种访问数据的检查型异常转换为非检查型异常(RuntimeException),为整合各种ORM框架提供基础。然后,Spring 通过模板化技术对各种数据访问技术进行了封装,将模板化的代码隐藏起来,使数据访问程序得到大幅简化。借助AOP技术,提供了声明式事务的能力。

Web及远程操作

该模块建立在 ApplicationContext 模块之上,提供了各种 Web 应用的各种工具类。Spring 支持 Spring MVC 框架,也支持其他框架的整合。

02 快速入门

领域对象

领域对象也被称为实体类,代表了业务的状态,贯穿展现层、业务层和持久层,最终被持久化到数据库中。领域对象使数据库操作以面向对象的方式进行,为程序扩展带来了更大的灵活性。领域对象不一定等同于数据库表,但是对于简单的应用来说,领域对象往往就对应数据库表。

领域模型中的实体类可以分为四种类型

  1. PO(Presistent Object):持久化对象,表示持久层的数据结构(如数据库表)
  2. DO(Domain Object):领域对象,业务实体对象。
  3. DTO(Data Transfer Object):数据传输对象,用于展示层与服务层之间的数据传输对象,可以看做是一个组合的DO。
  4. VO(View Object):视图对象,展示层视图状态对应的对象。

PO,DO/DOT,VO 分别属于持久层,服务层和展现层。对于简单模块来说,POVODO没有什么区别,直接使用PO即可。

03 Spring boot

简介

包含如下特性

  1. Spring快速入门体验
  2. 内嵌tomcat和jetty容器,不需要部署war文件到web容器就可以独立运行。
  3. 提供许多基于 maven 的 pom 配置模板来简化工程配置。
  4. 提供实现自动化配置的基础设施
  5. 开箱即用,没有代码生成,也无需XML配置,支持修改默认值来满足特定需求。

启动器:Spring boot是由一系列启动器组成的。根据项目需要,选择并组合相应的启动器,就可以快速搭建一个适合项目需要的基础运行框架。Spring boot 通过启动器将不同的第三方组件依赖进行套件封装,为开发Spring应用提供了一个易用的套件库。

主类

@SpringBootApplication 标记了主类。包含了 @Configuration @ComponentScan @EnableAutoConfiguration

@EnableTransactionManagement 注解表明开启事务支持,在方法上声明 @Transactional 注解即可。此时,Spring boot 自动提供了事务支持,如果想自定义事务管理器,在主类中添加一个 @Bean 即可。

主类实现 SpringBootServletInitializer 接口,即可支持SpringMVC。需要重写对应的 configure 方法。

运维支持

spring-boot-starter-actuator 实现监控功能。在 application.properties 中配置 management.health.*