美文网首页
2017.08.10

2017.08.10

作者: 铁拳宝宝爱芝麻 | 来源:发表于2017-08-10 20:25 被阅读0次

    学习 spring boot [https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-first-application]

    在官方 documentation 中的 "Developing your first Spring Boot application" 这一章节,教你如何开始一个 hello world 程序。

    1. 安装好 jdk 和 maven
      jdk 1.8.0.144
      maven 3.5.0
      spring boot 1.5.6 (稳定版本)

    2. 创建pom.xml

    <?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>1.5.6.RELEASE</version>
    </parent>
    
    <!-- Additional lines to be added here... -->
    </project>      
    

    执行 mvn package 命令,下载相应的依赖包,同时,会创建 target 目录,并试图对当前程序打包,生成可执行的 jar 文件,有一个 warning: JAR will be empty - no content was marked for inclusion!

    1. spring boot 提供了很多 starters(dependency descriptors),能够很方便根据这些依赖描述下载 jars 添加到 classpath 中
      spring-boot-starter-parent: 提供了很有用发 maven 默认配置,同时提供了依赖管理器的部分功能,所以我们不需要关注 jars 的版本标签,maven 能够通过 starter 提供的依赖描述就能自动下载对应版本的依赖 jars

    spring-boot-starter-web:web application

    执行 mvn dependency:tree,能够打印项目依赖树,同时第一次执行,会下载对应的依赖包。
    在 pom.xml 中加上 spring-boot-starter-web,继续执行上面的命令,发现:spring-boot-starter-parent 自己未提供依赖,spring-boot-starter-web展示了依赖树,包括 tomcat server 和 spring boot

    1. 创建目录结构,创建 java 文件
      src/main/java/Example.java
    @RestController
    @EnableAutoConfiguration
    public class Example {
    
    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }
    
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }
    }
    

    解释:
    @RestController:这是一个固定注解(stereotype annotation),能够为用户提供代码阅读提示。在 spring 中,被@RestController 注解的类,为 web @Controller 类,在 spring 处理 web requests 时,会使用该类进行处理。这个注解是在类层面的(class-level)

    @RequestMapping:提供了路由信息,它告诉 spring 任何路径带有 '/' 的HTTP Requests 都应该被映射到 home method。而@RestController告诉 spring 直接向调用者提交结果

    @EnableAutoConfiguration 注解,也是类层面的(class-level),它能根据你添加的依赖包告诉 spring 如何进行配置。比如 spring-boot-starter-web 添加了 Tomcat 和 Spring MVC,auto-configuration 就会认为你在创建 web 应用并按此进行配置
    注意:
    starters 和 auto-configuration 是一起工作的,但是两者并没有绑定。你可以在 starter 之外自由选择 jar dependencies, spring boot 仍能据此进行最合适的配置。

    1. The "main" method
      main方法是 Java 的标准方法,同时也是应用程序的入口点。我们的代码中的 main 方法代表了 spring boot 中的 SpringApplication 类,并且调用 run 方法。SpringApplication 引导我们的应用启动spring,spring在启动已经自动配置完成的 tomcat web server。我们需要将 Example.class 作为参数传递给 run 方法,告诉 SpringApplication 这才是 主 spring 组件 (primary spring component)

    2. run the example
      mvn spring-boot:run
      启动成功后,在浏览器上输入 http:127.0.0.1:8080,页面返回 hello world

    3. create excecutable jar
      spring boot 提供了一种方式,能够直接将 jar 打包在一起
      在 pom.xml 文件中的 dependencies 节点后面加上 spring-boot-maven-plugin,执行
      mvn package
      就能够在target 目录下创建 jar 文件

    java -jar jar文件执行
    jar tvf jar文件 // 查看 jar文件包含的所有文件信息

    相关文章

      网友评论

          本文标题:2017.08.10

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