SpringBoot学习笔记
1.简介
Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用
背景:
J2EE笨重的开发、繁多的配置、低下的开发效率、 复杂的部署流程、第三方技术集成难度大。
解决:
“Spring全家桶”时代。
Spring Boot ->J2EE一站式解决方案
Spring Cloud ->分布式整体解决方案
优点:
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值 – 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
springBoot的最终奉行的宗旨:废除所有复杂的开发,废除掉所有的配置文件,让开发变得更简单纯粹。SpringBoot的核心就是“零配置”。
2.Spring boot入门
2.1. 开发环境
开发环境JDK 1.8+
项目管理工具( Maven3.x+ )
开发工具(idea)
2.2. 入门
2.2.1. 创建Maven配置
在D盘创建好maven_config文件夹,里面再创建一个repository文件夹(用于存放maven下载的依赖包)和settings.xml(maven配置文件),后面会用到
其中settings.xml内容如下(使用阿里云镜像源):
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
2.2.2. 使用Spring Initializr(Spring脚手架)新建一个名为springbootdemo1的项目
File->New->Project->Spring Initializr
Web->Spring Web,点击Next
设置maven下载位置和配置文件为第一步的配置:
File | Settings | Build, Execution, Deployment | Build Tools | Maven
确认后等待maven下载所需依赖,下载完后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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springbootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbootdemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2.3. 在example包下新建controller包,并在controller包下新建HelloController类,内容如下:
package com.example.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("hello")
public class HelloController {
@RequestMapping("first")
public String first(){
return "Hello SpringBoot";
}
}
2.2.4. 启动此类,浏览器访问
http://localhost:8080/hello/first
发现可以访问到数据
2.2.5 文件结构
(1)pom文件结构
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
表示springBoot的父级依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-xxx
:spring-boot场景启动器,帮我们导入了所需模块正常运行所依赖的组件,比如web组件、单元测试组件。
Spring Boot将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目里面引入这些starter,相关场景的所有依赖都会导入进来。需要什么功能就导入什么场景的启动器。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
表示编译时候的一些配置,比如一些插件、打包相关都在此配置。
(2)启动类(引导类)
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
通过@SpringBootApplication注解,声明一个启动类,由于SpringBoot内置了tomcat服务器,会将此项目部署在tomcat上。