跳至主要內容

Springboot概述

wangdx大约 6 分钟

传统 Java 开发之痛

JavaEE 标准架构

  • Java 作为一门优秀的编程语言,不仅使用范围广泛,同时也成为了所有企业技术平台开发的首选语言,然而在早期的 JavaEE 技术开发中,受困于当时的硬件环境、软件技术网络带宽等因素的影响,人们会普遍选择 JavaEE 标准架构来进行项目的开发工作

自定义分层结构

  • 利用自定义的分层结构可以直接在一个 WEB 容器中实现所有的程序代码,这样就避免了昂贵的 EJB 容器以及繁琐的远程调用,但这样一来就会导致项目中的代码量过于判断那么就需要项目开发人员对代码进行规范化管理,同时对于不同层之间的调用进行相应的接口设计,以及明确的开发分工。

自定义开发框架

  • 为了便于对项目开发人员的代码规范化管理,较为成熟的技术公司都会基于 JavaEE 标准设计结构进行开发框架的设计,只要依据此开发框架编写代码,就可以编写出结构性强且适合于维护的软件项目,但是对于大部分的中小型公司而言,开发框架的维护更新也是一笔不小的费用,同时又需要考虑框架的普及性问题,所以往往都会使用一些较为成熟的开发框架,例如:Spring 开发框架。

Spring 之伤

Spring 是什么?

  • Spring 是由 Pivotal 公司推出的一个 JavaEE 的开发框架,最早是由 Rod Johnson 在 2002 年发起的开源项目,是基于 EJB 设计理论实现的一个轻量级容器(Lightweight 可以在不使用 EJB 容器的情况下,利用 Spring 运行容器方便的实现 Beancontainer)的生命周期管理。

Rod johnson

  • Rod Johnson 在 2002 年编著的《Expert one on one J2EE design and development》一书中,对 Java EE 系统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。
  • 同年他又推出了一部堪称经典的力作《Expert one-on-one J2EE Development without EJB》该书在 Java 世界掀起了轩然大波,不断改变着 Java 开发者程序设计和 开发的思考方式。

Spring 框架

  • Spring 提供了非常方便的 Bean 管理机制,使得开发者可以从繁琐的对象实例化与 GC 管理中彻底脱离出来,而后基于 I0C&DI 的依赖管理机制可以方便的实现不同 Bean 对象之间的引用维护,同时利用 AOP 技术可以有效的实现切面控制。由于 Spring 开发框架的日趋成熟也有越来越多的开发框架都提供了与 Spring 整合的支持,这样就使得 Spring 的应用范围更加广泛。最重要的是 Spring 是一个被长期维护的开源项目,这样使得其节约了企业中的框架维护成本与人员学习成本使用的群体广

Spring 运行流程

  • 为了适应于不同环境的需要还要将所有的服务配置属性单独抽取出来定义为 profile 文件(properties 资源文件),以数据库连接为例,一般都会分为生产环境、测试环境以及线上环境,这样在最终程序运行时就需要动态的配置不同 profile,才可以保证项目的正确运行

走进 SpringBoot

SpringBoot

  • 为了可以简化 Spring 项目应用从搭建到开发的过程,在 2014 年时对 Spring 开发框架进行了进一步的封装从而形成了一套全新的微服务开发框架一 SpringBoot(Boot 是引导的意思),在 SpringBoot 中可以继续使用 Spring 开发框架的全部功能,并且极大的简化了 Java 的开发模式。

SpringBoot 零配置

  • 在传统的 Spring 框架开发中如果要进行服务整合必然要编写大量的配置文件,但是在 SpringBoot 中将开发者中常规的开发操作进行抽象,使得可以采用“零配置”的方式进行整合,既不采用 xml 配置文件,而开发者在使用 Spring boot 开发时只需要将一些重要的服务信息定义在 profile 文件中,而后通过构建工具引入相关的组件模块后,即可自动配置并提供有相关类型的 Bean 对象

微服务

  • 在传统的项目架构设计中,会将所有的程序代码保存在同一个 war 之中进行部署,这样一来就会造成 WEB 容器的执行压力过大,而后而随着业务的不断完善,单台服务主机也无法承受住大规模的并发访问,这样就需要将整体的服务拆分,形成一个个小型的微服务。这样不仅可以得到良好的性能提升,也可以进行有效的代码维护

Martin Fower

  • 微服务最早是在 2014 年由一位叫“Martin Fowler”(著有《重构:改善既有代码的设计》一书)技术工程师发布的一篇博客开始的,在这篇博客中明确的描述了微服务是一种软件架构风格,在进行项目开发时一个完整的应用需要由一组微服务所组成,每个小型服务都运行在自己的进程内,多个不同的微服务之间使用 HTTP 进行通讯。

SpringBoot 技术特点

  • 独立运行的 Spring 项目:Spring Boot 可以以 jar 包的形式来直接运行在拥有 JDK 主机上
  • 内嵌 Web 容器:SpringBoot 内嵌了 Tomcat、Jetty 与 Undertow 容器,这样可以不局限于 war 包的部署形式:
  • 简化配置:在实际开发之中都需要编写大量的 Maven/Gradle 依赖,在 SpringBoot 之中会提供有一系列使用“starter”的依赖配置来简化 maven 配置文件的定义
  • 自动配置 Spring:采用合理的项目组织结构可以使 Spring 的配置注解自动生效:
  • 减少 XML 配置:在 SpringBoot 中依然支持有 XML 配置,但是也可以利用 Bean 和自动配置机制减少 XML 配置文件的定义

spring boot 官方文档open in new window

demo


上次编辑于: