本来地址:Spring Boot干货系列:(一)优雅的入门篇
博客地址:tengj.top/php
Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,因此决定花时间来了解和学习,为本身作技术储备。java
首先声明,Spring Boot不是一门新技术,因此不用紧张。从本质上来讲,Spring Boot就是Spring,它作了那些没有它你也会去作的Spring Bean配置。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易建立一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你能够不用或者只须要不多的Spring配置。git
Spring将不少魔法带入了Spring应用程序的开发之中,其中最重要的是如下四个核心。github
详细的咱们就不展开,等你爱上后天然会去深刻的了解,后续章节咱们会一一展开介绍。接下来让咱们开搞吧。我已经火烧眉毛的要尝尝Spring Boot的味道了。web
目前Spring Boot正式版为1.5.1.RELEASE默认状况下,Spring Boot 1.5.1.RELEASE须要Java 7和Spring Framework 4.3.6.RELEASE或更高版本,你也可使用Spring Boot with Java 6和一些额外的配置(不建议),使用Maven(3.2+)或Gradle 2(2.9或更高版本)和3来构建。spring
虽然你可使用Java 6或7的Spring Boot,但咱们一般推荐Java 8。apache
因此本博客系列统一使用Java 1.8,Spring Boot 1.5.1.RELEASE以及Maven3.3.9版本。开发工具使用IDEA(强烈推荐,能够看我另一篇介绍IDEA入门文章,内有官方中文教程:Java人员正确使用 IntelliJ IDEA的方式)json
没有比较就没有伤害,让咱们先看看传统Spring MVC开发一个简单的Hello World Web应用程序,你应该作什么,我能想到一些基本的需求。浏览器
最让人难以接受的是,这份清单里面只有一个东西是和Hello World功能相关的,即控制器,剩下的都是Spring开发的Web应用程序必需的通用模板。springboot
接下来看看Spring Boot如何搞定?
很简单,我仅仅只须要很是少的几个配置就能够迅速方便的搭建起来一套web项目
构建一个Sping Boot的Maven项目,强烈推荐Spring Initializr,它从本质上来讲就是一个Web应用程序,它能为你生成Spring Boot项目结构。
Spring Initializr有几种用法:
经过Web界面使用
http://start.spring.io/
选择构建工具Maven Project
、Spring Boot版本1.5.1
以及一些工程基本信息,可参考下图所示
点击Generate Project
下载项目压缩包
File
–>New
–>Project from Existing Sources...
OK
Import project from external model
并选择Maven
,点击Next
到底为止。Java SDK
的时候请选择Java 7
以上的版本经过IntelliJ IDEA使用(我的推荐)
IntelliJ IDEA是很是流行的IDE,IntelliJ IDEA 14.1已经支持Spring Boot了。
建立Spring Boot操做步骤以下:
在File菜单里面选择 New > Project,而后选择Spring Initializr,接着以下图一步步操做便可。
根据上面的操做已经初始化了一个Spring Boot的框架了,项目结构以下:
如你所见,项目里面基本没有代码,除了几个空目录外,还包含以下几样东西。
你们跟我一块儿移步pom.xml,看看Spring Boot的跟普通Spring MVC工程的Maven配置有啥不同
<?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.dudu</groupId>
<artifactId>chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>chapter1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>复制代码
能够看出,有几个配置是不大同样的,咱们挑几个重要的说说,要是客观不想过早的了解这些,自行跳过这一知识点便可。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>复制代码
这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它以后,经常使用的包依赖能够省去version标签。关于Spring Boot提供了哪些jar包的依赖,可查看C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom
这里我就贴一点点意思意思,以下:
<properties>
<!-- Dependency versions -->
<activemq.version>5.14.3</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine-sdk.version>1.9.48</appengine-sdk.version>
<artemis.version>1.5.2</artemis.version>
<aspectj.version>1.8.9</aspectj.version>
<assertj.version>2.6.0</assertj.version>
<atomikos.version>3.9.3</atomikos.version>
<bitronix.version>2.1.4</bitronix.version>
<caffeine.version>2.3.5</caffeine.version>
<cassandra-driver.version>3.1.3</cassandra-driver.version>
<classmate.version>1.3.3</classmate.version>
<commons-beanutils.version>1.9.3</commons-beanutils.version>
<commons-collections.version>3.2.2</commons-collections.version>
<spring-data-releasetrain.version>Ingalls-RELEASE</spring-data-releasetrain.version>
......
</properties>复制代码
若是你不想使用某个依赖默认的版本,您还能够经过覆盖本身的项目中的属性来覆盖各个依赖项,例如,要升级到另外一个Spring Data版本系列,您能够将如下内容添加到pom.xml中。
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>复制代码
本来默认版本是Ingalls-RELEASE的(看上面最后一行有说明
并非每一个人都喜欢继承自spring-boot-starter-parent POM。您可能有您须要使用的本身的公司标准parent,或者您可能更喜欢显式声明全部的Maven配置。
若是你不想使用spring-boot-starter-parent,您仍然能够经过使用scope = import依赖关系来保持依赖关系管理:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>复制代码
该设置不容许您使用如上所述的属性(properties)覆盖各个依赖项,要实现相同的结果,您须要在spring-boot-dependencies项以前的项目的dependencyManagement中添加一个配置,例如,要升级到另外一个Spring Data版本系列,您能够将如下内容添加到pom.xml中。
<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.5.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>复制代码
Spring Boot提供了不少”开箱即用“的依赖模块,都是以spring-boot-starter-xx做为命名的。举个例子来讲明一下这个起步依赖的好处,好比组装台式机和品牌机,本身组装的话须要本身去选择不一样的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是能够的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就好比咱们以前要实现web功能,引入了spring-boot-starter-web这个起步依赖。咱们来看看spring-boot-starter-web到底依赖了哪些,以下图:
嘿嘿嘿,看来依赖了好多呢,若是让我本身弄估计要调半天,因此Spring Boot经过提供众多起步依赖下降项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其余库的传递依赖,这些东西加在一块儿即支持某项功能。不少起步依赖的命名都暗示了它们提供的某种或者某类功能。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>复制代码
上面的配置就是Spring Boot Maven插件,Spring Boot Maven插件提供了许多方便的功能:
Chapter1Application是一个很关键的启动类,程序的入口就是这里,为了演示简单,咱们再也不新建控制类,而是直接在这个入口类中编写,添加@RestController以及index方法,以下:
package com.dudu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class Chapter1Application {
@RequestMapping("/")
public String index(){
return "Hello Spring Boot";
}
public static void main(String[] args) {
SpringApplication.run(Chapter1Application.class, args);
}
}复制代码
main方法这是一个标准的Java应用的main的方法,主要做用是做为项目启动的入口。
@RestController注解等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。
最后,启动项目有三种方式:
打开浏览器访问http://localhost:8080, 你就能看到页面显示Hello Spring Boot效果了,一个简单的Web的项目就是如此简单。
虽然我上面讲解了那么多,可是实际开发步骤就是那么简单暴力,初始化一个Spring Boot,添加一个控制类,启动就能看到效果了。
本章做为入门Spring Boot的入门介绍,相关的须要理解的概念就只有这几点:
想要查看更多Spring Boot干货教程,可前往:Spring Boot干货系列总纲
( ̄︶ ̄)↗[相关示例完整代码]
一直以为本身写的不是技术,而是情怀,一篇篇文章是本身这一路走来的痕迹。靠专业技能的成功是最具可复制性的,但愿个人这条路能让你少走弯路,但愿我能帮你抹去知识的蒙尘,但愿我能帮你理清知识的脉络,但愿将来技术之巅上有你也有我,但愿大爷你看完打赏点零花钱给我。
订阅博主微信公众号:嘟爷java超神学堂(javaLearn)三大好处: