• Stars
    star
    179
  • Rank 209,808 (Top 5 %)
  • Language
    Java
  • Created almost 7 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Spring boot learning

Spring Web项目开发

在接触Spring boot 前,如果我们需要开发一个简单的Spring Web 程序,需要经历以下步骤:

  • 一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,最起码要有SpringMVC和Servlet API这些依赖。
  • 一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring的DispatcherServlet。
  • 一个启用了Spring MVC的Spring配置。
  • 一个控制器类,以“Hello World”响应HTTP请求。
  • 一个用于部署应用程序的Web应用服务器,比如Tomcat。

在完成上述步骤的操作后,终于可以启动我们的Spring Web 程序。虽然步骤繁琐,但是在后续的开发过程中,这些步骤确实为我们节省了很多其他花销。但是Spring 的劣势还是很明显的,例如,我们只需要开发一个Hello world接口。那么在经历了上述那么多的步骤后,只有一个控制层 是和HelloWorld相关的。这让我们很难接受。

为解决这种复杂的问题,Spring boot 很好的提供了Spring boot CLI进行处理。首先我们看一下基于Groovy 的控制器类:

@RestController
class HelloController {
@RequestMapping("/")
def hello() {
return "Hello World"
}

相较于一个完整的Spring 项目来说,简洁了不少。然后我们使用Spring boot 的命令行界面(Command Line Interface),可以像下面这样运行 HelloController:

$ spring run HelloController.groovy

Spring Boot 概述

Spring Boot 精要

  • 自动配置:针对很多Spring 应用程序厂家爱你的应用功能
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
  • Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。

1、自动配置

我们在使用Spring 进行配置时,可能会使用到一下的配置Bean 方法,下面这段代码非常简单的生命了一个JdbcTemplate 实例,并注入一个DataSource依赖。当然,我们还需要一个DataSource 的Bean,下述的DataSource 在创建时,会默认执行一些sql 方法。 由Datasource 和JdbcTemplate 共同完成了Spring 的Bean 配置。

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}


@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScripts('schema.sql', 'data.sql')
.build();
}

区别与普通的Spring 配置,Spring boot 在应用程序的ClassPath里,如果发现了JdbcTemplate,那么他会为我们自动配置相应的Bean 实例。你无需关心Bean 的配置,Spring boot 会随时都能将其注入到你的Bean 里。

2、起步依赖

Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven依赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖。

例如,如果你需要使用到SpringMVC ,JSONObject以及其他相关的Web 依赖,你可能需要依次导入相关依赖,但是采用Spring-boot 的话,只需要利用起步依赖,即可将其他相关的依赖引入。

org.springframework.boot:spring-boot-starter-web

在导入了 spring-boot-starter-web 依赖后,会将一系列的相关依赖导入

3、命令行界面

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

4、Actuator

Spring Boot的最后一块“拼图”是Actuator,其他几个部分旨在简化Spring开发,而Actuator则要提供在运行时检视应用程序内部情况的能力。

Actuator 具有以下特性:

  • Spring应用程序上下文里配置的Bean
  • Spring Boot的自动配置做的决策
  • 应用程序取到的环境变量、系统属性、配置属性和命令行参数
  • 应用程序里线程的当前状态
  • 应用程序最近处理过的HTTP请求的追踪情况
  • 各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标

总结

简而言之,从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的Spring Bean配置。谢天谢地,幸好有Spring,你不用再写这些样板配置了,可以专注于应用程序的逻辑,这些才是应用程序独一无二的东西。