Spring Boot学习系列(一)------入门程序
前言
SpringBoot在近两年是一个很火的开源框架,在很多公司的项目中都有使用,所以学习一下该框架,为自己做一个技术储备。
正文
从本质上来说,SpringBoot就是Spring,所以学习难度不会太大。它使用“习惯优于配置”的理念让项目快速的运行。使用springboot可以很方便的创建一个独立运行的项目,内嵌了Servlet容器,减少我们在配置文件上花费的功夫。
-
初始化SpringBoot项目
构建一个SpringBoot有多种方式,一种是通过Web界面来生产,还有可以用IDEA或者Eclipse直接生成。
① 通过web界面创建
首先访问页面:http://start.spring.io/
选择构建工具可以使用Maven Project,版本等信息可以根据自己的需求来定,参考下图:
点击Generate Project
下载项目压缩包.
导入到自己的工程中,如果使用的是IDEA,则可以:
a.菜单中选择File–>New–>Project from Existing Sources…
b.选择解压后的项目文件夹,点击OK
c.点击Import project from external model并选择Maven,点击Next到底为止。
d.若你的环境有多个版本的JDK,注意到选择Java SDK的时候请选择Java 7以上的版本
②通过IntelliJ IDEA创建
a.在File菜单里面选择 New > Project,然后选择Spring Initializr,接着如下图一步步操作即可:
生成的项目结构如下所示:
项目里面很干净,包含了一下几个东西:
a.pom.xml:Maven构建说明文件。
b.Chapter1Application.java:一个带有main()方法的类,用于启动应用程序(关键)。
c.Chapter1ApplicationTests.java:一个空的Junit测试类,它加载了一个使用Spring Boot字典配置功能的Spring应用程序上下文。
d.application.properties:一个空的properties文件,你可以根据需要添加配置属性。 -
解析pom.xml文件
SpringBoot的pom文件和普通的SpringMVC的配置文件有一定的差距:
<?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>
如果你不想使用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到底依赖了哪些,如下图:
- 应用入口类:
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);
}
}
- @SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置。后续讲解原理的时候再深入介绍。
- main方法这是一个标准的Java应用的main的方法,主要作用是作为项目启动的入口。
- @RestController注解等价于@aaa@qq.com的结合,使用这个注解的类里面的方法都以json格式输出。
- 启动项目的方式:
Chapter1Application的main方法:
- 使用命令 mvn spring-boot:run”在命令行启动该应用,IDEA中该命令在如下位置:
- 运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行
打开浏览器访问http://localhost:8080, 你就能看到页面显示Hello Spring Boot效果了,一个简单的Web的项目就是如此简单。
总结
SpringBoot的开发就是如此的简单,我们不用再单独使用繁杂的配置文件,只需要关注业务即可.在下一篇文章中,将对SpringBoot的配置文件进行解析,加深认识,以便更好的使用SpringBoot.
本篇参考自:原文: http://tengj.top/2017/02/26/springboot1/ 作者: 嘟嘟MD
在后面的博文中,我将使用自己的小demo做演示.
推荐阅读
-
C#Web应用程序入门经典学习笔记之一
-
Spring boot 入门(一):快速搭建Spring boot项目
-
Spring Boot入门HelloWorld程序
-
Spring Boot入门系列八(SpringBoot 整合Mybatis)
-
spring boot 学习笔记(入门篇)
-
spring-boot-2.0.3不一样系列之源码篇 - run方法(三)之createApplicationContext,绝对有值得你看的地方
-
Spring Boot2 系列教程(一) | 如何使用 IDEA 构建 Spring Boot 工程
-
Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解
-
Spring Boot入门(一):搭建Spring Boot项目
-
spring-boot-2.0.3不一样系列之番外篇 - 自定义session管理,绝对有值得你看的地方