Spring Boot 官方文档学习入门及使用

Posted 官小飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 官方文档学习入门及使用相关的知识,希望对你有一定的参考价值。

一、内置Servlet Container:
Name Servlet Version Java Version

Tomcat 8

3.1

Java 7+

Tomcat 7

3.0

Java 6+

Jetty 9.3

3.1

Java 8+

Jetty 9.2

3.1

Java 7+

Jetty 8

3.0

Java 6+

Undertow 1.3

3.1

Java 7+

  此外,你仍然可以部署Spring Boot项目到任何兼容Servlet3.0+的容器。
二、使用Spring Boot。     你可以像使用标准的Java库文件一样使用Spring Boot。简单的将需要的  spring-boot-*.jar 添加到classpath即可。     Spring Boot不要求任何特殊的工具集成,所以可以使用任何IDE,甚至文本编辑器。       只是,仍然建议使用build工具:Maven 或 Gradle。       Spring Boot依赖 使用  org.springframework.boot  groupId  。     通常,让你的Maven POM文件继承 spring-boot-starter-parent,并声明一个或多个 Starter POMs依赖即可。Spring Boot也提供了一个可选的 Maven Plugin来创建可执行的jars。   如下:
<?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>1.4.0.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
      需要注意的是, spring-boot-starter-parent 是一个非常好的方法,但并不适用于所有情况。有时你需要继承其他的POM,或者你不喜欢默认的设置。-- 办法见后面。   三、安装Spring Boot CLI。     这是一个命令行工具,可以执行Groove脚本。是执行一个Spring Boot的最快途径。     -- 好吧,Linux下无敌,Win下还是休息吧。   四、开发一个简单的Spring Boot应用--使用最原始的方式。     务必注意:前提是maven + jdk。      1、创建一个文件夹。SpringBootSample01      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.4.0.RELEASE</version>
    </parent>
    <!-- Additional lines to be added here... -->
</project>
     3、上面没有添加任何依赖,但仍然可以build。命令行:mvn package。注意,是当前路径下 //SpringBootSample01/ 。         当然,你也可以使用IDE,不过使用文本编辑器会让我们对它更理解。               4、现在需要添加依赖 -- 其实就是把依赖的jar添加到buildpath。         由于我们已经继承了 spring-boot-starter-parent ,而 spring-boot-starter-parent 又提供了 dependency-management ,所以我们可以忽略被选中依赖的版本。         在添加依赖之前,我们先看一下现在已有什么:mvn dependency:tree。该命令会打印一个当前项目的依赖树。               结果表明,当前没有任何依赖。             OK,现在我们添加一个Starter 模块。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
            现在再次查看一下依赖树。             可以看出,spring-boot-starter-web  包含了很多内容,spring-webmvc、spring-web、jackson、validation、tomcat、starter。        5、现在就可以开始写代码了。         由于Maven默认编译路径为 src/main/java 下面的源码,所以,默认设置下,需要创建这些文件夹。                 然后,编写文件 src/main/java/Example.java:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
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);
    
        这里我们只需要关心 @EnableAutoConfiguration 即可。这个注解是让Spring Boot 猜测 你想怎么配置Spring,但实际上,它是根据你添加到classpath中的依赖来判断的。         注意,自动配置 可以配合 Starter POMs 一起工作,但二者不是捆绑到一起的。你仍然可以将Starter POMs中的依赖单独拣出使用,Spring Boot还是会自动配置。          6、启动项目。由于我们使用了 spring-boot-starter-parent POM,所以可以使用 mvn spring-boot:run来启动项目(根路径)。             启动之后就可以访问了,默认地址:  http://localhost:8080/          7、打包。executable jars 又称 fat jars,是可以直接在生产环境中运行的,包含所有编译生成的class文件以及依赖包。             注意,Spring Boot的这种打包方式需要使用Spring Boot提供的 spring-boot-maven-plugin 。         
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
            注意,spring-boot-starter-parent POM中包含了 <executions> 的配置信息,绑定了 repackage goal (maven)。如果你不使用parent POM,你需要自己来声明这个配置信息。             现在,可以打包了: mvn package 。                          现在,你可以在/target目录下看到 myproject-0.0.1-SNAPSHOT.jar ,大约10 Mb左右。可以通过 jar tvf target/myproject-0.0.1-SNAPSHOT.jar 来查看其中的内容。             此外,在/target目录下,还可以看到 myproject-0.0.1-SNAPSHOT.jar.original ,这是Maven打包出来的---在Spring Boot repackage 之前。              8、执行。正常的jar执行:java -jar target/myproject-0.0.1-SNAPSHOT.jar  ,启动信息如下:                          执行 ctrl+c,退出。 五、Dependency Management 每个版本的Spring Boot都提供了一个依赖列表。这个列表包含了你可能通过Spring Boot用到的所有的Spring模块以及第三方库。该列表可以以 BOM(Bills of Material)的形式支持Maven。 ---  怎么理解BOM和Starter?什么区别??   1、继承 spring-boot-starter-parent :        spring-boot-starter-parent project        默认是 Java 1.6。 Resource filtering。exec plugin、surefire、Git commit ID、shade。       Resource filtering for application.properties 和 application.yml,以及,profile-specific file,如application-foo.properties 或 application-foo.yml。       -- 注意Maven filtering使用  @..@ 占位符,你可以在Maven property中覆盖:resource.delimiter。          如果不想使用Spring Boot中的默认版本,可以在<properties>覆盖相应的版本,如,想使用不同版本的Spring Data,具体如下:
<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
        想使用不同版本的JDK
<!-- 使用 java 1.8 -->
<java.version>1.8</java.version>
  2、不继承 spring-boot-starter-parent : 这种情况下,仍然可以使用dependency management,但不能使用plugin management啦。方式如下:
<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.4.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
注意,scope是  import 。而且,这种情况下,不再允许在<properties>覆盖相应的版本。如果要使用其他版本,需要在上面的前面添加一个完整的dependency。如下:
<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.4.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 

另外,Spring Boot还提供了一个Maven Plugin:spring-boot-maven-plugin,用于将项目打包成fat jar(executable jar)。 继承时只需要 声明一下即可使用:
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 

六、Starters 可以创建自己的Starter,但名字格式不能是 spring-boot-starter-*,而是 *-spring-boot-starter。类似Maven插件的规则。   七、自动配置 @Import 和 @ComponentScan 类似; @EnableAutoConfiguration 和 @SpringBootApplication 类似;---注意,只能使用一次,建议用在primary @Configuration class上。   注意,自动配置永远是第二位的,一旦你配置自己的东西,那自动配置的就会被覆盖。 查看自动配置都配置了什么,以及为什么,启动应用的时候加上 --debug即可。 禁用特定的自动配置:
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
public class MyConfiguration 
如果class不在classpath中,可以使用  excludeName,然后使用 全路径即可。   八、Spring Beans 和 依赖注入。 九、@SpringBootApplication @SpringBootApplication 等同于默认的属性的  @Configuration@EnableAutoConfiguration  and @ComponentScan。  -- 注意,@ComponentScan 不能凭空使用。    十、运行Spring Boot Application 1、从IDE中运行 需要导入现有Maven项目。 如果不小心运行了两次,出现端口占用问题,STS(Spring Tools Suite)使用Relaunch即可。   2、运行fat jar(executable jar) java -jar target/xxxx.jar    注意,是在项目路径下执行。 开启 远程调试支持
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar target/myproject-0.0.1-SNAPSHOT.jar

 

3、使用Maven Plugin
  1. mvn spring-boot:run
4、Hot swapping   热部署??? 好像不是,是热加载。 因为Spring Boot应用都是简单的Java应用,所以JVM Hot-swapping可以直接使用。但是,JVM Hot-swapping对于能够替换的字节码有些限制,所以建议使用JRebel或者Spring Loaded?? spring-boot-devtools 模块同样包含了快速重启应用的支持。 另外,貌似JVM Hot-swapping 只能在debug期间修改方法体??       十一、Developer tools Spring Boot包含一组附加的开发期工具。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <opti

以上是关于Spring Boot 官方文档学习入门及使用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 官方文档学习入门及使用

Spring Boot 2从入门到入坟 | 基础入门篇:你会看Spring Boot的官方文档吗?

Spring Boot 2从入门到入坟 | 基础入门篇:你会看Spring Boot的官方文档吗?

20191114 Spring Boot官方文档学习(4.7)

spring boot 官方文档怎么学习

20191127 Spring Boot官方文档学习