Episode1:SpringBoot创建Maven项目

第一章、Spring Boot 入门

目录

  • Spring简介
  • 微服务
  • 环境约束
  • 项目实战与回溯
  • 快速创建

1、Spring简介

简化Spring应用开发的一个框架

整个Spring技术栈的一个大整合

J2EE开发的一站式解决方案

2、微服务

2014年,martin fowler

微服务是一种架构风格(服务微化)

一个应用应该是一组小型服务 ;可以通过HTTP方式进行互通;

单体应用:ALL IN ONE;

微服务:Microservices

每一个功能元素最终都是一个可独立替换和独立升级的软件单元;

详情参照微服务文档

3、环境约束

-jdk1.8:Spring Boot 1.7及以上;

-maven3.x:maven3.3以上;

-Intellij IDEA 2017,或STS;

-SpringBoot 1.5.9.RELEASE;

3.1 MAVEN设置

给maven的settings.xml配置文件中,profiles标签添加代码

1
2
3
4
5
6
7
8
9
10
11
12
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

3.2 IDEA设置

Configer-Settings-Build-Maven

4、第一个项目:SpringBootHelloWorld

浏览器请求-服务器响应

4.1 创建一个Maven工程;(jar)

务必选择自动导入(enable Auto Import)的方式,以便以后在pom文件写依赖时自动导入

4.2 SpringBoot导入相关依赖

(1)编辑pom.xml文件

插入以下代码(pom文件是用于构建项目的配方,导入父项目)

1
2
3
4
5
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>

(2)添加类路径依赖项

要添加必要的依赖项,请编辑pom.xml并在parent部分下方添加spring-boot-starter-web依赖项:

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

等待External自动导入相关依赖jar包

4.3 编写一个主程序

启动SpringBoot应用

1
2
3
4
5
6
7
8
9
10
11
/**
* @SpringBootApplication 来标注一个主程序类说明这是一个SpringBoot应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {

//启动Spring应用
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}

4.4 编写相关的Controller、Servise

1
2
3
4
5
6
7
8
9
@Controller
public class HelloController {

@ResponseBody
@RequestMapping("/Hello")
public String hello(){
return "Hello World";
}
}

4.5 运行主程序测试

4.6 简化部署

将这个应用打成jar包,直接使用java -jar的命令执行;(无需tomcat)

编辑pom.xml文件,安装插件

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在侧边选择 maven-package 生成jar包,直接使用 java -jar 名字 的命令执行(tab提示)

参考手册:SpringBoot中文文档

5、Hello World 探究

5.1 POM文件

(1)父项目

1
2
3
4
5
6
7
8
9
10
11
12
13
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
他的父项目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
这是真正管理SpringBoot应用的所有依赖版本;

SpringBoot的版本依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)

(2)启动器(导入依赖)

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web

spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件

Springboot将所有场景都抽取出来,做成一个个starters(启动器),只需在项目里引入这些

starters相关场景的所有依赖都会导入进来,需要什么功能就导入什么场景的启动器

5.2 主程序类

1
2
3
4
5
6
7
8
9
10
11
/**
* @SpringBootApplication 来标注一个主程序类说明这是一个SpringBoot应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {

//启动Spring应用
public static void main(String[] args) {
SpringApplication.run(HelloWorldMainApplication.class, args);
}
}

@SpringBootApplication(自动配置底层原理)

6、使用SpringInitializer快速创建SpringBoot项目

IDEA支持使用Spring项目创建向导快速创建一个SpringBoot项目;

不选择Maven选择Spring Initializr

选择需要的模块;向导会联网创建SpringBoot项目;

默认生成的SpringBoot项目:

  • 主程序写好,只需要自己的逻辑
  • resources文件夹目录结构
    • static:所有静态资源,如js、css、images;
    • templates:保存所有模板页面(默认jar包使用嵌入式Tomcat,不支持JSP页面);可以使用引擎模板(freemarker、thymeleaf);
    • application.properties:应用配置文件,可以修改默认配置server.port = 8081