Spring Boot学习笔记-快速示例

笔者最近在学习Spring Boot的参考指南,很兴奋!由于Spring Boot中有太多的亮点值得点赞了,笔者认为,当你从无到有,经历过全部的痛点或迷茫以后,忽然有一个“神器”帮你解决了以前的困惑时,你对这个“神器”才会有更深入的感悟及印象。html

Spring Boot简介

简单介绍下Sring Boot:Spring Boot使开发独立的, 产品级别的基于Spring的应用变得很是简单, 你只需"just run"。 咱们为Spring平台及第三方库提供开箱即用的设置, 这样你就能够有条不紊地开始。多数Spring Boot应用须要不多的Spring配置。java

很明显,Spring Boot能够很方便地帮你构建基于Spring开发的应用!web

Spring Boot的主要目标是:spring

  • 为全部的Spring开发提供一个从根本上更快的和普遍使用的入门经验。
  • 开箱即用, 但你能够经过不采用默认设置来摆脱这种方式。
  • 提供一系列大型项目经常使用的非功能性特征( 好比, 内嵌服务器, 安全, 指标, 健康检测, 外部化配置) 。
  • 绝对不须要代码生成及XML配置。

Spring Boot基于Maven的应用

Spring Boot建议使用JDK1.6或更高的版本,但尽管Spring Boot兼容Java 1.6, 若是可能的话, 你应该考虑使用Java最新版本。指南中建议使用JDK8,可见其前卫性呀。浏览器

一般推荐使用者使用一个支持依赖管理的构建工具( 好比Maven或Gradle),Spring Boot对这两种构建工具进行了完美的结合。安全

因为笔者主要是进行的Web开发,而且使用Maven已久,所以重点记录Spring Boot + Maven的应用。Maven须要3.2或更高的版本。服务器

Spring Boot不会破坏Maven已有的规则,相反Spring Boot会根据Maven的最佳实践,给出更方便的配置与操做。app

Maven项目中引入Spring Boot

在pom.xml中添加以下配置便可:less

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.3.0.BUILD-SNAPSHOT</version>
</parent>

Spring Boot提供不少"Starter POMs", 这可以让你轻松的将jars添加到你的classpath下。maven

程序已经在POM的partent节点使用了spring-boot-starter-parent。spring-boot-starter-parent是一个特殊的starter,它提供了有用的Maven默认设置,例如项目默认是基于UTF8的编码,编译环境默认为JDK1.6等等。同时,它也提供了一个dependency-management节点, 这样对于“blessed”依赖你能够省略version标记。

固然你可能并不须要spring-boot-starter-parent,后续会有“Spring Boot without the parent POM”的办法。

固然我须要构建一个Spring MVC项目,单单上面的配置是不够的,还须要另外一个“Starter POM”,只需在pom.xml中添加依赖便可:

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

这个spring-boot-starter-web会把开发Spring MVC应用所可能用到的依赖自动地帮你加载进来。能够经过mvn dependency:tree命令查看。

添加一个Spring Boot的Maven插件,它能够提供更多的Maven功能。

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

这个插件既可使咱们应用mvn spring-boot:run命令来运行程序,也能够帮咱们二次打包应用为可运行的jar包!Java没有提供任何标准的加载内嵌jar文件(即jar文件中还包含jar文件)的方法,Spring Boot采起一个不一样的途径,并容许你真正的内嵌jars。

固然要使用插件二次打包这个特性,须要绑定repackage目标的 <executions> 配置。若是你不使用parent POM, 你将须要本身声明该配置。具体可参见插件文档

最后,若是你使用的Spring Boot不是release版本,可能须要在pom.xml中添加如下配置:

<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
	<repository>
		<id>spring-snapshots</id>
		<url>http://repo.spring.io/snapshot</url>
		<snapshots><enabled>true</enabled></snapshots>
	</repository>
	<repository>
		<id>spring-milestones</id>
		<url>http://repo.spring.io/milestone</url>
	</repository>
</repositories>
<pluginRepositories>
	<pluginRepository>
		<id>spring-snapshots</id>
		<url>http://repo.spring.io/snapshot</url>
	</pluginRepository>
	<pluginRepository>
		<id>spring-milestones</id>
		<url>http://repo.spring.io/milestone</url>
	</pluginRepository>
</pluginRepositories>

示例要点

上述的项目pom.xml配置完成后,写一个简单的SpringMVC的示例。

首先创建一个DemoController。

@RestController
public class DemoController {

    @RequestMapping("/demo")
    String home() {
        return "Hello World!";
    }
}

而后创建一个项目的启动类,同时“兼职”Spring的Java配置类。

@Configuration
@EnableAutoConfiguration
@ComponentScan   
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

要项目跑起来有经常使用的两种方式:

  • 使用mvn spring-boot:run命令,固然这多亏了Spring Boot的Maven插件。
  • 先使用mvn package命令将项目打包(maven打包后,Spring Boot Maven插件会将jar包二次打包),而后在命令行运行"java -jar xxx.jar"便可。

**ps:**在项目的target目录下,xxx.jar.original是Maven打包的原始jar包,xxx.jar是插件的二次打包。

项目跑起来后,浏览器地址栏输入"localhost:8080/demo",验证"Hello World!"结果。

到此你可能会疑惑,Spring MVC项目里为何会有main函数?没有Servlet容器,项目是怎么运行起来的呢?

main函数能够暂时先理解为Spring Boot应用(基于Spring Boot构建的应用)的独特运行方式。

Spring Boot打出的jar包之因此有单独运行的能力,并非脱离了Servlet容器,而是将内嵌的Servlet容器一块儿打包了!这归功于上面的spring-boot-starter-web依赖。Sring Boot对多种内嵌容器进行了支持,只须要配置相关的starter依赖便可。

**ps:**查看文档能够看出,Spring Boot对Servlet容器的支持,Servlet版本均在3.0以上,须要使用者多了解Servlet3.0的机制。传送门

将应用打包成jar运行,一个好处是你能够像Java SE那样来运行程序;更有利的一点是,可执行jars可用于生产部署。因为它们是自包含的,很是适合基于云的部署。

相关文章
相关标签/搜索