初涉springboot(二)

概述

  1、环境说明

  2、HelloWorld项目细节

    3、小结

  

一. 关于环境补充

  在上一篇的HellWorld项目中,我们构建SpringBoot项目,采用的是jdk1.8版本,springboot官方建议配合jdk1.7及其以上版本来开发springboot。而如springboot1.5.8中一些@Repeat注解都是jdk1.8才有的,所以建议是jdk1.8版本及以上来开发。同时,SpringBoot提供嵌入式的Tomcat,直接打成jar包便可运行。IDEA打包过程如下:

 

包的位置默认位置是在target目录下 。打包好后,可以通过在命令行 java jar xxx.jar  直接运行。 并且,我们可以通过解压工具看一下,这个xxx.jar中的内容。来到lib目录下,我们可以看到有导入tomcat-embed字样的包,这就是springboot内嵌的tomcat容器,可以直接运行这个springboot的jar包,不需要打成war放到webapp目录中运行。其中也导入了运行web项目所需的基本jar包,均是自动化配置。

 

 

二. Hello World项目的细节

   看完了环境,接下来看看该项目的pom.xml文件,来看看为什么springboot能替我们做了这么多“人性化”的工作。

 在POM文件中,我们可以看到有如下的,不同以往的配置。我们来一 一解释。

  1.  父级依赖

①、首先看到我们的是springboot-helloworld.pom.xml文件中依赖了此父级依赖

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.18.BUILD-SNAPSHOT</version>
  <relativePath/> <!– lookup parent from repository –>
</parent>


②、ctrl + 左键 点击 spring-boot-starter-parent 进入此父项目,发现其也依赖一个父项目

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>1.5.18.BUILD-SNAPSHOT</version>
  <relativePath>../../spring-boot-dependencies</relativePath>
</parent>


③、点击spring-boot-dependencies,进入查看父项目 ,可以发现,这里文件中配置了大量的版本依赖属性,
ps : 在<properties>标签中,在此不截图。

  可以看到,在 spring-boot-dependencies项目中配置了我们熟知的一些组件的版本,如连接池、切面、json版本。它是真正管理 SpringBoot组件版本的 管理中心。因为它的存在,只要它有配置的,我们都可以不配置依赖的版本,SpringBoot自动帮助我们配置。当然,我们也可以自己添加、修改没有的或者已有的组件的版本,只需要在我们自己项目的pom.xml文件的 <properties>属性添加即可:

spring-boot-dependencies.pom默认配置:
  <spring.version>4.3.20.RELEASE</spring.version>


自己的pom文件中加入即可修改:
  

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

  <spring.version>5.0.0.RELEASE</spring.version>
</properties>

 

  2.  starter 启动器

   何为“启动器”,自然是通过这个“东西”去启动对应的特定功能。同样的,我们能在父项目 spring-boot-dependencis.pom中看到,在<dependencies>标签中看到大量的 spring-boot-starter-xxx组件。再结合我们helloworld项目中的pom:

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

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

  没错,它的功能就是,我们需要什么功能的组件,就导入什么 starter ,springboot就可自动为我们添加该组件。上述我们需要springboot的web功能,就对应配上spring-boot-starter-web 组件。着实方便。

 

  3.插件

  在helloworld中的插件:

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

这个插件是帮助我们打成jar包用。在初涉springboot(一)中,我们通过 package命令直接打成jar包而不是war,得益于此。

 

  4. @SpringBootApplication 注解

 在主程序入口中,我们是通过执行此注解所在类的main方法跑动项目的,这个注解标识此为主程序类,是一个Spring Boot应用。此注解要放在其他类的同级目录或子目录之下,否则会找不到其他类。(这是个坑,因为SpringBoot默认配置了扫描的位置。) 关于@SpringBootApplication注解后续会详述。

 

三.小结

  要称为一个SpringBoot项目,就需要标注 @SpringBootApplication注解代表程序入口;

  启动器starter引入功能;

  父级依赖的spring-boot-dependencies.pom则配置了默认版本。

 三者相互作用,跑动第一个SpringBoot项目。

 

 

  如有错误,敬请斧正,以免误导他人。