美文网首页
Spring Boot 官网文档简单翻译 Part II

Spring Boot 官网文档简单翻译 Part II

作者: icameisaw | 来源:发表于2018-10-08 21:53 被阅读99次

    Part II. Getting Started

    文档说明:

    • 文档对应的版本为 2.1.0.M3
    • 这不是文档的完整中文翻译,也有可能跟原文文字不一一对应,只是我阅读文档时候做的简单笔记
    • 如果对应的章节没有任何中文,有可能是文档内容比较少,建议直接看原文,或者是我不感兴趣的部分
    • 目录标题没有做翻译,首先标题一般一眼就能看懂什么意思,不做翻译还能保证原文意思,其次也方便对应到原文位置

    8. Introducing Spring Boot

    Spring Boot 让创建一个独立的、生产级别的、基于 Spring 的应用更加容易。
    主要目标:

    • 对于开发所有的 Spring 应用,提供一个非常快和非常容易理解的体验
    • 能快速适应需求变化
    • 提供大量非业务逻辑的通用功能,例如内嵌服务,安全,统计,健康检查和外部配置
    • 绝对没有代码生成和XML配置 (原文:Absolutely no code generation and no requirement for XML configuration)

    9. System Requirements

    Spring Boot 2.1.0.M3 requires Java 8 or 9 and Spring Framework 5.1.0.RC3 or above.
    其他版本的 Spring Boot 请参看对应版本的文档。

    10. Installing Spring Boot

    JDK 1.8 or Spring Boot CLI(Command Line Interface)

    10.1 Installation Instructions for the Java Developer

    可以把相关的 spring-boot-*.jar 拷贝到 classpath,但推荐使用构建工具。

    10.1.1 Maven Installation

    Spring Boot 依赖于 groupId 为 org.springframework.boot 的组件。
    一般来说都是依赖 spring-boot-starter-parent 组件,也可以根据需要添加更多的 Starter。
    spring-boot-starter-parent 并不总是适用,可以参考 “Using Spring Boot without the Parent POM” 章节

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="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.example</groupId>
        <artifactId>myproject</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <!-- Inherit defaults from Spring Boot -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.M3</version>
        </parent>
        ...
    <project/>
    

    10.1.2 Gradle Installation

    依赖的东西是一样的,但是配置的语法有所不一样

    10.2 Installing the Spring Boot CLI

    Spring Boot CLI 是一个可以运行 Groovy 脚本来快速获取 Spring 应用的工具。

    10.2.1 Manual Installation

    10.2.2 Installation with SDKMAN!

    SDKMAN:The Software Development Kit Manager
    SDKMAN 用来管理多个版本的二进制 SDK,包括 Groovy 和 Spring Boot CLI。
    从 sdkman.io 安装 SDKMAN,然后运行下面的脚本

    $ sdk install springboot
    $ spring --version
    Spring Boot v2.1.0.M3
    

    10.2.3 OSX Homebrew Installation

    10.2.4 MacPorts Installation

    10.2.5 Command-line Completion

    10.2.6 Windows Scoop Installation

    10.2.7 Quick-start Spring CLI Example

    @RestController
    class ThisWillActuallyRun {
        @RequestMapping("/")
        String home() {
            "Hello World!"
        }
    }
    

    Then run it from a shell, and Open localhost:8080 in your favorite web browser to check the status

    $ spring run app.groovy
    

    10.3 Upgrading from an Earlier Version of Spring Boot

    如果你想从一个比较旧的版本升级到比较新的版本,建议先查阅官方的 "migration guide" on the project wiki

    Spring 提供了一个分析你的应用环境并打印出来建议的方法,还可以临时迁移属性。启用这个功能,需要添加如下配置

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-properties-migrator</artifactId>
        <scope>runtime</scope>
    </dependency>
    

    11. Developing Your First Spring Boot Application

    开发你的第一个 Spring Boot 应用:通过一个简单的 HelloWorld Web 应用,介绍 Spring Boot 的关键特性。
    建议先检查一下 java 和 maven 的版本:

    # Java 要求 1.8 或者以上
    java -version
    # Maven 要求 3.2 或者以上
    mvn -v
    

    11.1 Create the POM

    POM 文件可看做是你项目的“食谱”。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="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.example</groupId>
        <artifactId>myproject</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.M3</version>
        </parent>
    
        <!-- Additional lines to be added here... -->
    
        <!-- (you don't need this if you are using a .RELEASE version) -->
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <url>https://repo.spring.io/snapshot</url>
                <snapshots><enabled>true</enabled></snapshots>
            </repository>
            <repository>
                <id>spring-milestones</id>
                <url>https://repo.spring.io/milestone</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-snapshots</id>
                <url>https://repo.spring.io/snapshot</url>
            </pluginRepository>
            <pluginRepository>
                <id>spring-milestones</id>
                <url>https://repo.spring.io/milestone</url>
            </pluginRepository>
        </pluginRepositories>
    </project>
    

    上面的例子应该给到你一个可以工作的构建,可以通过 mvn package 来验证一下。你也可以在你熟悉的 IDE 添加这些内容。

    11.2 Adding Classpath Dependencies

    Spring Boot 提供了很多 Starters 来让你添加 jar 依赖到你的 classpath。文档上面的应用例子已经在 POM 文件里面的 parent 节点使用了 spring-boot-starter-parent。这个 spring-boot-starter-parent 是一个特殊的 starter,它提供了很多有用的 Maven 默认值。文档后面还提供了 "13.1 Dependency Management" 章节来介绍依赖管理,你可以在引入依赖的时候忽略版本号。
    当开发特定类型的应用时,其他 "Starters" 会提供你需要的依赖。例如我们要开发一个 Web 应用,我们会添加 spring-boot-starter-web 的 starter 依赖。在这之前,我们可以查看现在项目都有哪些依赖

    $ mvn dependency:tree
    
    [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
    

    mvn dependency:tree 命令会打印并以树形展示你项目的依赖,添加 spring-boot-starter-web 后,再执行该命令看下输出

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    

    11.3 Writing the Code

    Maven 默认会从 src/main/java 目录编译代码。
    src/main/Example.java

    import org.springframework.boot.*;
    import org.springframework.boot.autoconfigure.*;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @EnableAutoConfiguration
    public class Example {
    
        @RequestMapping("/")
        String home() {
            return "Hello World!";
        }
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Example.class, args);
        }
    
    }
    

    11.3.1 The @RestController and @RequestMapping Annotations

    Example.java 的第一个注解 @RestController 是一个 stereotype 注解,它向阅读代码的人和 Spring 表明了它在充当 Web 应用的 @Controller 角色。
    @RequestMapping 注解提供了“路由”信息。它告诉 Spring 所有带有 "/" 的 HTTP 请求都应该映射到 home 路径。@RestController 注解告诉 Spring 应该渲染结果内容并直接返回给调用方。
    @RestController 和 @RequestMapping 都是 Spring MVC 的注解,并不是 Spring Boot 特有的注解。

    11.3.2 The @EnableAutoConfiguration Annotation

    @EnableAutoConfiguration 注解告诉 Spring Boot 根据你引入的 jar 依赖去“猜猜”你想怎样配置 Spring。spring-boot-starter-web 会自动引入 Tomcat 和 Spring MVC 组件,Spring Boot 的自动装配机制会认为你在开发一个 Web 应用。

    Starters and Auto-configuration:Auto-configuration 是被设计来和 starter 协作的,但这两个概念并不是直接绑定的。你可以选择不以 starter 的方式来添加 jar 依赖,Spring Boot 的 Auto-configuration 仍然会做好其本分工作。

    11.3.3 The "main" Method

    例子代码的最后部分就是 main 方法。这个 main 方法只是 Java 代码运行的主入口。我们的 main 方法委托给了 Spring Boot's SpringApplication.run() 方法。SpringApplication 启动了应用。

    11.4 Running the Example

    到了这里,你的应用可以运行了。由于引用了 spring-boot-starter-parent,你会拥有启动应用的 run 脚本。在应用根目录下输入 mvn spring-boot:run 命令,然后在浏览器 输入 localhost:8080 验证服务是否启动成功。

    $ mvn spring-boot:run
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::  (v2.1.0.M3)
    ....... . . .
    ....... . . . (log output here)
    ....... . . .
    ........ Started Example in 2.222 seconds (JVM running for 6.514)
    

    11.5 Creating an Executable Jar

    Executable jar 是包含编译的 class 文件和所有 jar 依赖文件的 jar。

    Java 没有提供关于加载嵌入 jar 文件(在 jar 文件里面包含另外的 jar 文件)的标准,命令行这种 jar 文件在不解压就在就可能会有问题。
    为解决这个问题,很多开发者都通过共享 jar 的形式来处理。一个共享的 jar 包含了所有的类和 jar,并放进一个 jar 文件里面。这样你很难知道里面包含了多少库的依赖,而且还可能有文件重名的问题。
    Spring Boot 采取了不同的做法,它让你直接内嵌 jar 文件。

    为了创建一个可执行 jar 文件,需要在 POM 文件添加一个插件:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

    通过 mvn package 命令打包:

    $ mvn package
    
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building myproject 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] .... ..
    [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
    [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
    [INFO]
    [INFO] --- spring-boot-maven-plugin:2.1.0.M3:repackage (default) @ myproject ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    

    如同日志输出的内容显示,打包好的文件会输出到 target/myproject-0.0.1-SNAPSHOT.jar。
    可以解压该 jar 文件看看里面的内容:

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

    运行该 jar 文件:

    $ java -jar target/myproject-0.0.1-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::  (v2.1.0.M3)
    ....... . . .
    ....... . . . (log output here)
    ....... . . .
    ........ Started Example in 2.536 seconds (JVM running for 2.864)
    

    12. What to Read Next

    相关文章

    相关文章

      网友评论

          本文标题:Spring Boot 官网文档简单翻译 Part II

          本文链接:https://www.haomeiwen.com/subject/ckksaftx.html