https://blog.csdn.net/qq_31655965/article/details/71258191
1. 什么是springboot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot是伴随着Spring4.0诞生的;
从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;
SpringBoot帮助开发者快速启动一个Web容器;
SpringBoot继承了原有Spring框架的优秀基因;
SpringBoot简化了使用Spring的过程。
2. 为什么会出现
以前在写spring项目的时候,要配置各种xml文件,还记得曾经被ssh框架支配的恐惧。随着spring3,spring4的相继推出,约定大于配置逐渐成为了开发者的共识,大家也渐渐的从写xml转为写各种注解,在spring4的项目里,你甚至可以一行xml都不写。
虽然spring4已经可以做到无xml,但写一个大项目需要茫茫多的包,maven配置要写几百行,也是一件很可怕的事。
现在,快速开发一个网站的平台层出不穷,nodejs,php等虎视眈眈,并且脚本语言渐渐流行了起来(Node JS,Ruby,Groovy,Scala等),spring的开发模式越来越显得笨重。
在这种环境下,spring boot伴随着spring4一起出现了。Spring Boot更多的是采用Java Config的方式,对Spring进行配置。
3. 可以做什么
那么,spring boot可以做什么呢?
spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring boot都可以做。
现在流行微服务与分布式系统,springboot就是一个非常好的微服务开发框架,你可以使用它快速的搭建起一个系统。同时,你也可以使用spring cloud(Spring Cloud是一个基于Spring Boot实现的云应用开发工具)来搭建一个分布式的网站。
4. 优点
4.1 使编码变得简单
spring boot采用java config的方式,对spring进行配置,并且提供了大量的注解,极大地提高了工作效率。
4.2 使配置变得简单
spring boot提供许多默认配置,当然也提供自定义配置。但是所有spring boot的项目都只有一个配置文件:application.properties/application.yml。用了spring boot,再也不用担心配置出错找不到问题所在了。
4.3 使部署变得简单
spring boot内置了三种servlet容器:tomcat,jetty,undertow。
所以,你只需要一个java的运行环境就可以跑spring boot的项目了。spring boot的项目可以打成一个jar包,然后通过java -jar xxx.jar
来运行。(spring boot项目的入口是一个main方法,运行该方法即可。 )
4.4 使监控变得简单
spring boot提供了actuator包,可以使用它来对你的应用进行监控。它主要提供了以下功能:
5. 相关技术
5.1 微服务架构
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
比如我要开发一个购票系统。就可以简单的拆分为用户管理微服务和售票系统微服务。两个服务都可以独立运行,都有自己的数据库,他们之间通过restapi 进行通信。
而spring boot就是搭建微服务的一个很好的选择。
5.2 restful
restful 是一种api的风格,后面的文章里,会着重讲解。spring boot可以很方便的提供restful 风格的api。
5.3 spring cloud
微服务有很多优点,当然也有一些挑战。可以参考这篇文章:
微服务实战(一):微服务架构的优势与不足。
微服务一般都是运行在分布式环境中的,这可不是简单的写一个ssm框架的小程序就可以解决的,其中需要用到很多技术,比如负载均衡,反向代理,服务治理,配置管理,消息总线等,spring cloud提供了这些技术。并且,spring cloud全家桶是基于spring boot的。
之后会专门开一个spring cloud的专题。
6. 总结
来总结一下spring boot的特点。
独立运行的Spring项目
Spring Boot可以以jar包的形式进行独立的运行,使用:java -jar xx.jar 就可以成功的运行项目,或者在应用项目的主程序中运行main函数即可;
内嵌的Servlet容器
我们上面已经讲过。
提供starter简化Manen配置
spring boot提供各种starter,其实就是一些spring bao的集合,只不过spring boot帮我们整合起来了而已。
上图只是其中的一部分,还有很多其他的。通过这些starter也可以看得出来,spring boot可以和其他主流的框架无缝集成,比如mybatis等。所以,你不需要担心你想用的技术spring boot不支持。
自动配置Spring,无xml文件
Spring Boot会根据我们项目中类路径的jar包/类,为jar包的类进行自动配置Bean,这样一来就大大的简化了我们的配置。当然,这只是Spring考虑到的大多数的使用场景,在一些特殊情况,我们还需要自定义自动配置(就在那唯一的配置文件里,而且它不是xml文件!)。
应用监控
Spring Boot提供了基于http、ssh、telnet对运行时的项目进行监控。
---------------------------------------------------------------------------------------------------------------------------------------------------------
创建项目
如果使用STS的话,新建Spring Starter Project即可。
可以看到Spring Boot和一般的项目差不多,只不过多应用了Spring Boot插件,它会让我们更方便的运行Spring。另外在项目中没有其他依赖的引用,只引用了Spring Boot Starter依赖,这些依赖会将可能会使用到的依赖帮我们引用。例如spring-boot-starter-test
会引用JUnit、AssertJ等一些测试框架,我们不用再引用了。这极大地方便了我们的开发。而且这些依赖不需要指定具体版本,具体的版本由Spring帮我们决定。新建好的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.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>
项目格式
项目格式类似下图。资源文件夹下static
文件夹用来存放web程序的静态资源,例如图片、css、js等。template
文件夹存放web程序的视图模板,html等需要渲染的模板文件就放在这里。application.properties
文件很重要,它是Spring Boot项目的全局配置文件。以往我们需要编写层级XML配置文件,现在只需要在这里使用key=value
方式即可指定这些属性。默认的模板还为我们添加了两个类。一个在main下,是Spring Boot项目的运行类,另一个在test下,是测试类。
不写properties配置,也可以写一个application. yml
运行类的代码如下。它是一个简单的类,包含了主方法,而且类上使用了@SpringBootApplication注解。这是一个惯用注解,它会帮我们启用自动配置等特性。
@SpringBootApplication
public class SpringBootSampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootSampleApplication.class, args);
}
}