转载

使用Spring Boot构建应用程序

在这篇文章中,我们将探讨使用Spring Boot构建应用程序。 我们将介绍Spring Boot的不同方面以及使用Spring Boot构建应用程序的不同选项。

1. 介绍

Spring Boot有自己一套的约定,而且约定优于配置。Spring Boot通过用Spring平台自有的约定来消除大部分项目设置,这样新用户和现有用户就可以快速到达他们需要的开发节点。Spring Boot使创建一个以Spring为动力的企业应用程序变得非常容易,而且操作简单。

2. Spring Boot特性

Spring Boot提供以下开箱即用的功能:

  1. 它通过采用预定义的约定简化了Spring依赖关系(我们将会更详细地讨论它)。
  2. Spring Boot提供了一组预先配置的技术/框架来减少容易出错的配置,因此我们作为开发人员专注于构建业务逻辑而不是考虑项目设置。
  3. 你真的不需要为你的项目配置那些大的XML配置。
  4. 直接内嵌Tomcat、Jetty 或 Undertow。
  5. 提供预定义的Maven POM来简化你的配置。

3. 创建Spring Boot项目

启动一个项目的最主要挑战之一是初始化该项目的配置。我们需要对不同的目录结构进行调用,并且需要确保我们遵循所有行业标准。如果你使用的是Maven,那么你可能已经在使用Maven启动工件,它可以帮助我们更快地完成初始设置。

Spring Initializr是另外一个非常棒的快速启动一个Spring Boot项目的工具。Spring Initializr是一个生成Spring Boo项目的web应用。请记住,它只会生成项目结构,而不会根据你的偏好为你生成任何代码( Maven或Gradle )。如果你正在启动你的项目,我的推荐是使用Spring Initializr。

有几种方式来使用Spring Boot Initializr为你生成项目结构:

  1. 使用Spring Initializr Web界面
  2. 使用Spring Boot CLI工具
  3. 使用你的IDE

3.1 使用Spring Initializr Web界面

这是为你的应用生成项目结构的最简单方式。在你的浏览器打开Spring Initializr Web界面,你将看到一个向导来开始你的配置。

使用Spring Boot构建应用程序

你需要在这个web界面填写一些信息:

  1. 你要生成哪一类项目(Maven还是Gradle)
  2. 你想用什么语言(除了Java,你还可以选择Kotlin或Groovy)
  3. Spring Boot的版本
  4. 项目的 GroupID和ArtifactID
  5. 选择所需依赖

在web界面里选择依赖是一个有趣的功能。基于你选择的依赖,web界面将自动在生成的pom.xml文件中增加 Spring Boot Starter 依赖。如果你想要更多地控制生成的项目结构,或者不确定要添加到项目中的依赖,请单击“切换到完整版”。

使用Spring Boot构建应用程序

使用完整版本界面,你可以选择Java版本,打包模式(比如用于传统部署的war包)以及为项目选择依赖的选项。一旦你点击“生成项目”按钮,Spring Initializr将生成项目,你将下载得到一个zip文件。 你可以在IDE中将解压缩的项目作为基于Maven 或 Gradle的项目导入。

我将不会详细介绍如何在IDE中导入项目。 有关更多详细信息,请参阅相关的IDE文档。

3.2 使用Spring Boot CLI

我们也可以使用Srping Boot CLI来生成项目的结构。只要你安装了CLI,就可以打开终端输入spring。如果你正确安装了CLI,输入spring,回车后将看到如下类似的输出:

localhost:~ javadevjournal$ spring
usage: spring [--help] [--version]
       [<args>]

Available commands are:

  run [options]  [--] [args]
    Run a spring groovy script

我们可以在spring命令后使用init作为额外的参数来创建一个新的项目。Spring Boot CLI将在其内部使用start.spring.io来为你创建项目结构。如下例子:

localhost:~ javadevjournal$ spring init --dependencies=web springboot-demo-project
Using service at https://start.spring.io
Project extracted to '/Users/umesh/springboot-demo-project'

上述命令将创建一个基于Maven的使用spring-boot-starter-web的项目,目录名为springboot-demo-project。这和使用start.spring.io的web界面创建的项目是一样的效果。我们可以传递不同的参数来自定义项目的生成。

比如,我们想创建基于Java 1.7的项目,我们可以传递 --java-version=1.7 作为额外参数给Spring Boot CLI:

spring init --java-version=1.7  --dependencies=web springboot-demo-project

当执行上面的命令后,在项目的pom.xml文件里自动增加了Java 1.7相关的信息:

<properties>
    <java.version>1.7</java.version>
</properties>

如果你不确认Spring init的功能有什么,可以带上标志 --list :

spring init --list

4. 查看pom.xml的内容

我们来看看pom.xml文件的内容,来更详细地了解Spring Boot的配置。我将只关注pox.xml里与Spring Boot有关的变化。如下是我们创建样例项目的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.umeshawasthi</groupId>
  <artifactId>ems</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>ems</name>
  <description>Employee Management System outline Spring Boot Features</description>

  <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.5.4.RELEASE</version>
     <relativePath/> <!-- lookup parent from repository -->
  </parent>
   <!-- project properties repository -->
  <dependencies>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
     </dependency>

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
     </dependency>
        <!-- Spring boot test depedency -->
  </dependencies>
</project>

Spring Boot最主要的特色就是“ Starters ”,它们是增加依赖包到classpath的便捷方式。使用Spring Boot的时候,我们不需要增加jar包或依赖到classpath(如果一个starter不可用了,你可以自己增加所需依赖到classpath,或者创建你自己的starter)。我们仅需要增加正确的“Starters”到我们的pom.xml里,Spring Boot会确保自动增加那些依赖。

5. 应用程序入口

@SpringBootApplication
public class EmsApplication{

  public static void main(String[] args){

     SpringApplication.run(EmsApplication.class, args);
  }
}

5.1 @SpringBootApplication注解

我们的主类用了@SpringBootApplication注解。@SpringBootApplication等同于同时使用@Configuration、@EnableAutoConfiguration和@ComponentScan。如果你启动你的项目,建议使用这个注解。使用@SpringBootApplication等同于同时使用如下三个注解:

  1. @Configuration 作为bean定义的来源。
  2. @EnableAutoConfiguration 它使得Spring Boot自动配置应用程序。
  3. @ComponentScan 它会自动扫描所有的Spring组件,包括使用了 @Configuration 注解的类。

5.2 主方法

我们主类的另一个有趣的地方是主方法。它是遵循标准Java工作流程的标准方法。 我们的主类将把控制权交给Spring Boot的 SpringApplication类。 SpringApplication类的run方法将用于引导应用程序。 我们将在后面更深入地观察SpringApplication。

6. Hello World 控制器

package com.javadevjournal.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class HelloWorldController{

   @RequestMapping("/")
   public String helloWorld(){
       return "Hello World!!";
   }
}

控制器非常简单。它是使用Spring MVC标准注解的Spring MVC控制器。

7. 运行应用

是时候运行我们第一个Spring Boot程序了。我们有几种方式来运行我们的Spring Boot程序。

  1. 如果我们使用IDE, 我们可以用IDE来运行我们Spring Boot程序。
  2. 我们可以在项目根目录下用 mvn spring-boot:run 命令来启动我们的第一个Spring Boot程序。
 .   ____          _            __ _ _
 /// / ___'_ __ _ _(_)_ __  __ _ / / / /
( ( )/___ | '_ | '_| | '_ // _` | / / / /
 ///  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_/__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.4.RELEASE)

2017-07-08 15:49:50.319  INFO 1238 --- [           main] com.javadevjournal.demo.EmsApplication   : Starting EmsApplication on localhost with

打开浏览器,输入 http://localhost:8080 ,回车,我们将看到 Hello World 。

原文  http://szpzs.oschina.io/2018/05/21/introduction-to-spring-boot/
正文到此结束
Loading...