zoukankan      html  css  js  c++  java
  • 用spring boot 来创建第一个application

    spring boot  来创建一个简单的“Hello World!”Web应用程序,该应用程序突出了Spring Boot的一些主要功能。我们使用Maven来构建这个项目,因为大多数IDE都支持它。

     

    在开始之前,打开终端并运行以下命令以确保安装了有效的Java和Maven版本:

    1 $ java -version
    2 java版“1.8.0_102”
    3 Java(TM)SE运行时环境(版本1.8.0_102-b14)
    4 Java HotSpot(TM)64位服务器VM(版本25.102-b14,混合模式)
    1 $ mvn -v
    2 Apache Maven 3.5.4(1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:003 Maven home:/usr/local/Cellar/maven/3.3.9/libexec
    4 Java版本:1.8.0_102,供应商:Oracle Corporation
    此示例需要在其自己的文件夹中创建。后续说明假定您已创建了一个合适的文件夹,并且它是您当前的目录。
     

    4.1  创建POM

    我们需要从创建Maven pom.xml文件开始。pom.xml是用来构建项目的配方。打开您喜欢的文本编辑器并添加以下内容:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5 
     6     <groupId>com.example</groupId>
     7     <artifactId>myproject</artifactId>
     8     <version>0.0.1-SNAPSHOT</version>
     9 
    10     <parent>
    11         <groupId>org.springframework.boot</groupId>
    12         <artifactId>spring-boot-starter-parent</artifactId>
    13         <version>2.2.0.M2</version>
    14     </parent>
    15 
    16     <!-- Additional lines to be added here... -->
    17 
    18     <!-- (you don't need this if you are using a .RELEASE version) -->
    19     <repositories>
    20         <repository>
    21             <id>spring-snapshots</id>
    22             <url>https://repo.spring.io/snapshot</url>
    23             <snapshots><enabled>true</enabled></snapshots>
    24         </repository>
    25         <repository>
    26             <id>spring-milestones</id>
    27             <url>https://repo.spring.io/milestone</url>
    28         </repository>
    29     </repositories>
    30     <pluginRepositories>
    31         <pluginRepository>
    32             <id>spring-snapshots</id>
    33             <url>https://repo.spring.io/snapshot</url>
    34         </pluginRepository>
    35         <pluginRepository>
    36             <id>spring-milestones</id>
    37             <url>https://repo.spring.io/milestone</url>
    38         </pluginRepository>
    39     </pluginRepositories>
    40 </project>

    上面的清单应该为您提供有效的构建。您可以通过运行来测试它mvn package(现在,您可以忽略“jar将为空 - 没有内容标记为包含!”警告)。

    此时,您可以将项目导入IDE(大多数现代Java IDE包括对Maven的内置支持)。为简单起见,我们继续为此示例使用纯文本编辑器。

    4.2  添加Classpath依赖项

    Spring Boot提供了许多“Starters”,可以将jar添加到类路径中。我们的示例应用程序已经spring-boot-starter-parentparent POM部分中使用spring-boot-starter-parent是一个特殊的启动器,提供有用的Maven默认值。它还提供了一个dependency-management 部分,以便您可以省略version“祝福”依赖项的标记。

    其他“Starters”提供了在开发特定类型的应用程序时可能需要的依赖项。由于我们正在开发Web应用程序,因此我们添加了spring-boot-starter-web依赖项。在此之前,我们可以通过运行以下命令来查看当前的内容:

    1 $ mvn依赖:树
    2 [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

    mvn dependency:tree命令打印项目依赖项的树表示。您可以看到它spring-boot-starter-parent本身不提供依赖关系。要添加必要的依赖项,请编辑pom.xmlspring-boot-starter-web在该parent部分下方添加 依赖项

    1 <dependencies>
    2     <dependency>
    3         <groupId>org.springframework.boot</groupId>
    4         <artifactId>spring-boot-starter-web</artifactId>
    5     </dependency>
    6 </dependencies>

    如果mvn dependency:tree再次运行,您会发现现在有许多其他依赖项,包括Tomcat Web服务器和Spring Boot本身。

    4.3  编写代码

    要完成我们的应用程序,我们需要创建一个Java文件。默认情况下,Maven编译源代码src/main/java,因此您需要创建该文件夹结构,然后添加一个名为src/main/java/Example.java包含以下代码的文件

     1 import org.springframework.boot.*;
     2 import org.springframework.boot.autoconfigure.*;
     3 import org.springframework.web.bind.annotation.*;
     4 
     5 @RestController
     6 @EnableAutoConfiguration
     7 public class Example {
     8 
     9     @RequestMapping("/")
    10     String home() {
    11         return "Hello World!";
    12     }
    13 
    14     public static void main(String[] args) {
    15         SpringApplication.run(Example.class, args);
    16     }
    17 
    18 }

    虽然这里的代码不多,但还是有很多代码。我们将在接下来的几节中逐步介绍重要部分。

    4.3.1  @RestController@RequestMapping注解

    我们Example班上的第一个注释@RestController这被称为 构造型注释。它为阅读代码的人提供了提示,而为Spring提供了特定角色的提示。在这种情况下,我们的类是一个Web @Controller,因此Spring在处理传入的Web请求时会考虑它。

    @RequestMapping注释提供“路由”的信息。它告诉Spring,任何带/路径的HTTP请求都应该映射到该home方法。@RestController注解告诉Spring使得到的字符串直接返回给调用者。

    @RestController@RequestMapping注解是Spring MVC的注解。(它们不是Spring Boot特有的。)有关更多详细信息,请参阅Spring参考文档中的MVC部分

    4.3.2  @EnableAutoConfiguration注释

    第二个类级注释是@EnableAutoConfiguration这个注释告诉Spring Boot根据你添加的jar依赖关系“猜测”你想要如何配置Spring。自从spring-boot-starter-web添加了Tomcat和Spring MVC 以来,自动配置假定您正在开发Web应用程序并相应地设置Spring。

    启动器和自动配置

    自动配置旨在与“启动器”配合使用,但这两个概念并不直接相关。您可以自由选择并在首发之外选择jar依赖项。Spring Boot仍然尽力自动配置您的应用程序。

    4.3.3  “主要”方法

    我们的应用程序的最后一部分是main方法。这只是遵循应用程序入口点的Java约定的标准方法。我们的main方法SpringApplication通过调用委托给Spring Boot的run。 SpringApplication引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器。我们需要Example.class作为参数传递run方法,以告诉SpringApplication哪个是主要的Spring组件。该 args数组也被传递以公开任何命令行参数。

    4.4。运行示例

    此时,您的应用程序应该工作。由于您使用了 spring-boot-starter-parentPOM,run因此您可以使用一个有用的目标来启动应用程序。mvn spring-boot:run从根项目目录中键入以启动应用程序。您应该看到类似于以下内容的输出:

     1 $ mvn spring-boot:run
     2 
     3   。____ _ __ _ _
     4  / \ / ___'_ __ _ _(_)_ __ __ _    
     5 (() ___ |'_ |'_ | |'_  / _` |    
     6  \ / ___)| | _)| | | | | || (_ | |))))
     7   '| ____ | .__ | _ | | _ | _ | | _  __,| / / / / /
     8  ========= | _ | ============== | ___ / = / _ / _ / _ /
     9  :: Spring Boot ::(v2.2.0.M2)
    10 ....... 。。
    11 ....... 。。(此处输出日志)
    12 ....... 。。
    13 ........ 2.222秒启动示例(JVM运行6.514)

    如果您打开Web浏览器localhost:8080,您应该看到以下输出:

    1 你好,世界!

    要正常退出应用程序,请按ctrl-c

    4.5  创建一个可执行的Jar

    我们通过创建一个完全自包含的可执行jar文件来完成我们的示例,我们可以在生产中运行它。可执行jar(有时称为“fat jar”)是包含已编译类以及代码需要运行的所有jar依赖项的归档。

    可执行的jar和Java

    Java没有提供加载嵌套jar文件的标准方法(jar文件本身包含在jar中)。如果您要分发自包含的应用程序,这可能会有问题。

    为了解决这个问题,许多开发人员使用“超级”罐子。uber jar将所有应用程序依赖项中的所有类打包到一个存档中。这种方法的问题在于很难看出您的应用程序中有哪些库。如果在多个罐子中使用相同的文件名(但具有不同的内容),也可能会有问题。

    Spring Boot采用不同得方法,让您直接嵌套jar。

    要创建可执行jar,我们需要添加spring-boot-maven-plugin到我们的 pom.xml为此,请在该dependencies部分下方插入以下行

    1 <build>
    2     <plugins>
    3         <plugin>
    4             <groupId>org.springframework.boot</groupId>
    5             <artifactId>spring-boot-maven-plugin</artifactId>
    6         </plugin>
    7     </plugins>
    8 </build>
    所述spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果您不使用父POM,则需要自己声明此配置。有关详细信息,请参阅插件文档

    保存pom.xml并从命令行运行mvn package,如下所示:

     1 $ mvn包
     2 
     3 [INFO]扫描项目......
     4 [信息]
     5 [INFO] ----------------------------------------------- -------------------------
     6 [INFO]构建myproject 0.0.1-SNAPSHOT
     7 [INFO] ----------------------------------------------- -------------------------
     8 [INFO] ....
     9 [INFO] --- maven-jar-plugin:2.4:jar(default-jar)@ myproject ---
    10 [INFO]构建jar:/Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
    11 [信息]
    12 [INFO] --- spring-boot-maven-plugin:2.2.0.M2:重新打包(默认)@ myproject ---
    13 [INFO] ----------------------------------------------- -------------------------
    14 [信息]建立成功
    15 [INFO] ----------------------------------------------- -------------------------

    如果你查看target目录,你应该看到myproject-0.0.1-SNAPSHOT.jar该文件大小应为10 MB左右。如果你想偷看内部,你可以使用jar tvf,如下:

    1 $ jar tvf target / myproject-0.0.1-SNAPSHOT.jar

    您还应该看到目录中命名myproject-0.0.1-SNAPSHOT.jar.original文件小得多target这是Maven在Spring Boot重新打包之前创建的原始jar文件。

    要运行该应用程序,请使用以下java -jar命令:

     1 $ java -jar target / myproject-0.0.1-SNAPSHOT.jar
     2 
     3   。____ _ __ _ _
     4  / \ / ___'_ __ _ _(_)_ __ __ _    
     5 (() ___ |'_ |'_ | |'_  / _` |    
     6  \ / ___)| | _)| | | | | || (_ | |))))
     7   '| ____ | .__ | _ | | _ | _ | | _  __,| / / / / /
     8  ========= | _ | ============== | ___ / = / _ / _ / _ /
     9  :: Spring Boot ::(v2.2.0.M2)
    10 ....... 。。
    11 ....... 。。(此处输出日志)
    12 ....... 。。
    13 ........ 2.536秒启动示例(JVM运行2.864)

    打开Web浏览器localhost:8080,就能看到以下输出:

     步骤参考官方文档:https://docs.spring.io/spring-boot/docs/2.2.0.M2/reference/html/getting-started.html#getting-started-first-application

  • 相关阅读:
    poj 2763 Housewife Wind
    hdu 3966 Aragorn's Story
    poj 1655 Balancing Act 求树的重心
    有上下界的网络流问题
    URAL 1277 Cops and Thieves 最小割 无向图点带权点连通度
    ZOJ 2532 Internship 网络流求关键边
    ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
    SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流
    怎么样仿写已知网址的网页?
    5-10 公路村村通 (30分)
  • 原文地址:https://www.cnblogs.com/vision-xixi/p/11066906.html
Copyright © 2011-2022 走看看