《SpringBoot实战》第一章:入门

1.1、SpringBoot简化了Spring应用程序开发

1.2、SpringBoot的基本特性

1.3、SpringBoot工作区的设置

2004年,Spring Framework 1.0正式发布。至今,Spring 已然成为Java应用开发的事实标准。

Spring Boot的目标就是帮助开发者更加敏捷地开发Spring应用程序,专注应用程序的功能。

SpringBoot的自动配置、起步依赖和CLI命令行界面简化了Spring应程序的开发。

Spring 风云再起

Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。从很重的XML配置,到Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。但诸如事务管理和Spring MVC,还是需要用XML或Java进行显式配置。启用第三方库时也需要显式配置,比如基于Thymeleaf的Web视图。配置Servlet和过滤器(比如Spring的DispatcherServlet)同样需要在web.xml或Servlet初始化代码里进行显式配置。组件扫描减少了配置量,Java配置让它看上去简洁不少,但Spring还是需要不少配置。除此之外,项目的依赖管理也是费力不讨好的事情,比如选择哪些库以及库版本的兼容问题。

重新认识 Spring

用Spring开发一个简单的Hello World Web应用程序的基本需要:

》一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件;

》一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring 的DispatcherServlet;

》一个启用了Spring MVC的Spring配置;

》一个控制器类,以“Hello World”响应HTTP请求;

》一个用于部署应用程序的Web应用服务器,比如Tomcat;

——————————————————————————————————————

SpringBoot精要

》自动配置

针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。

在任何Spring应用程序的源代码里,你都会找到Java配置或XML配置(抑或两者皆有),它们为应用程序开启了特定的特性和功能。Spring Boot会为这些常见配置场景进行自动配置。这些自动配置涉及Java持久化API(Java Persistence API,JPA)、Thymeleaf模板、安全和 Spring MVC。

你不用再写这些样板配置了,可以专注于应用程序的逻辑

》起步依赖

告诉Spring Boot需要什么功能,它就能引入需要的库。

Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven依赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖。所以需要什么功能支持就引入相关的起步依赖就行了。此外,起步依赖引入的库的版本都是经过测试的,它们之间不会出现不兼容的情况。

Spring Boot起步依赖基本都以spring-boot-starter打头,随后是直接代表其功能的名字,比如web、test。

》命令行界面

这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。

Spring Boot CLI让只写代码即可实现应用程序成为可能,它利用了起步依赖和自动配置,让你专注于代码本身。

CLI能检测到你使用了哪些类,它知道要向Classpath中添加哪些起步依赖才能让它运转起来。一旦那些依赖出现在Classpath中,一系列自动配置就会接踵而来,确保启用 DispatcherServlet和Spring MVC,这样控制器就能响应HTTP请求了。

Spring Boot CLI是Spring Boot的非必要组成部分。虽然它为Spring带来了惊人的力量,大大简化了开发,但也引入了一套不太常规的开发模型。

》Actuator

让你能够深入运行中的Spring Boot应用程序,一探究竟。

其他几个部分旨在简化Spring开发,而Actuator 则要提供在运行时检视应用程序内部情况的能力。安装了Actuator就能窥探应用程序的内部情况了,包括如下细节:

》Spring应用程序上下文里配置的Bean;

》Spring Boot的自动配置做的决策;

》应用程序取到的环境变量、系统属性、配置属性和命令行参数;

》应用程序里线程的当前状态;

》应用程序最近处理过的HTTP请求的追踪情况;

》各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标;

Actuator通过Web端点和shell界面向外界提供信息。如果要借助shell界面,你可以打开SSH (Secure Shell),登入运行中的应用程序,发送指令查看它的情况。

Spring Boot 不是什么

》Spring Boot不是应用服务器

Spring Boot 在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),所以Spring Boot可以把Web应用程 序变为可自执行的JAR文件,不用部署到传统Java应用服务器里就能在命令行里运行。

》Spring Boot也没有实现诸如JPA或JMS(Java Message Service,Java消息服务)之 类的企业级Java规范。它的确支持不少企业级Java规范,但是要在Spring里自动配置支持那些特 性的Bean。

》Spring Boot没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性, 以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置。

SpringBoot入门

从根本上来说,Spring Boot的项目只是普通的Spring项目,只是它们正好用到了Spring Boot 的起步依赖和自动配置而已。

开启一个新的Spring Boot项目最快的方法就是安装Spring Boot CLI,安装后就可以开始写代码,接着通过 CLI来运行就好。

Spring Boot CLI为Spring Boot提供了快速上手和构建简单原型应用程序的途径。在正确的生产运行时环境下,它也能用于开发生产应用程序。

Spring Boot CLI的几种安装方式
 用下载的分发包进行安装。
 用Groovy Environment Manager进行安装。  通过OS X Homebrew进行安装。
 使用MacPorts进行安装

( Spring Boot CLI安装方法详见:https://my.oschina.net/happyran/blog/1588818 )

使用 Spring Initializr 初始化 Spring Boot 项目

通常 情况下,Java项目用Gradle或Maven这样的工具构建出WAR文件,再把这些文件部署到应用服务 器里。

Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构。

虽然不能生成应用程序代码,但它能为你提供一个基本的项目结构,以及一个用于构建代码的 Maven或Gradle构建说明文件。

Spring Initializr有几种用法。

 通过Web界面使用。

 通过Spring Tool Suite使用。

 通过IntelliJ IDEA使用。

 使用Spring Boot CLI使用。

( Spring Initializr几种用法详见:https://my.oschina.net/happyran/blog/1588830 )

小结

自动配置消除了传统Spring应用程序里的很多样板配置;

Spring Boot起步依赖让你能通过库 所提供的功能而非名称与版本号来指定构建依赖;

Spring Boot CLI将Spring Boot的无阻碍开发模 型提升到了一个崭新的高度,在命令行里就能简单快速地用Groovy进行开发;

Actuator让你能深 入运行中的应用程序,了解Spring Boot做了什么,是怎么做的。

 

转载于:https://my.oschina.net/happyran/blog/1588633

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值