微服务SpringBoot总结

什么是SpringBoot
SpringBoot是Spring项目中的一个子工程,与咱们所熟知的Spring-framework 同属于spring的产品
官方介绍:
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
咱们一般把Spring Boot称为搭建程序的脚手架。其最主要做用就是帮咱们快速的构建庞大的spring项目,而且尽量的减小一切xml配置,作到开箱即用,迅速上手,让咱们关注于业务而非配置。java

为何要学习SpringBoot
java一直被人诟病的一点就是臃肿、麻烦。当咱们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其缘由主要是两点:程序员

复杂的配置
项目各类配置实际上是开发时的损耗, 由于在思考 Spring 特性配置和解决业务问题之间须要进行思惟切换,因此写配置挤占了写应用程序逻辑的时间。
混乱的依赖管理
项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪一个版本和其余库不会有冲突,这也是件棘手的问题。而且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。
而SpringBoot让这一切成为过去!web

SpringBoot的特色
Spring Boot 主要特征是:spring

建立独立的spring应用程序
直接内嵌tomcat、jetty和undertow(不须要打包成war包部署)
提供了固定化的“starter”配置,以简化构建配置
尽量的自动配置spring和第三方库
提供产品级的功能,如:安全指标、运行情况监测和外部化配置等
绝对不会生成代码,而且不须要XML配置
总之,Spring Boot为全部 Spring 的开发者提供一个开箱即用的、很是快速的、普遍接受的入门体验
更多细节,你们能够到官网查看。apache

SpringBoot快速入门
方式一:Maven 构建项目
一、访问 http://start.spring.io/
二、选择构建工具 Maven Project、Java、Spring Boot 版本 2.1.3 以及一些工程基本信息,可参考下图所示:tomcat

三、点击 Generate Project 下载项目压缩包
四、解压后,使用 Idea 导入项目,File -> New -> Model from Existing Source… -> 选择解压后的文件夹 -> OK,选择 Maven 一路 Next,OK done!
五、若是使用的是 Eclipse,Import -> Existing Maven Projects -> Next -> 选择解压后的文件夹 -> Finsh,OK done!安全

方式二:Idea 构建项目
一、环境要求:springboot

二、Idea 建立一个空的demo工程,而后在工程中建立moduel(maven跳过骨架)
三、引入依赖:SpringBoot如何帮助咱们管理依赖?
SpringBoot提供了一个名为spring-boot-starter-parent的工程,里面已经对各类经常使用依赖(并不是所有)的版本进行了管理,咱们的项目须要以这个项目为父工程,这样咱们就不用操心依赖的版本问题了,须要什么依赖,直接引入坐标便可app

添加父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
添加启动器
为了让SpringBoot帮咱们完成各类自动配置,咱们必须引入SpringBoot提供的自动配置依赖,咱们称为启动器。spring-boot-starter-parent工程将依赖关系声明为一个或者多个启动器,咱们能够根据项目需求引入相应的启动器,由于咱们是web项目,这里咱们引入web启动器:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这个时候,咱们会发现项目中多出了大量的依赖,这些都是SpringBoot根据spring-boot-starter-web这个依赖自动引入的,并且全部的版本都已经管理好,不会出现冲突。框架

完整的POM
<?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.ityang.springboot</groupId>
<artifactId>ityang-springboot</artifactId>
<version>1.0.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>

四、添加全局的启动类:若是单独的写在一个个Controller里面,没法启动多个Controller,每一个main方法都监听8080端口。因此单独写出作一些框架配置

@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

五、编写HelloController

@RestController
public class HelloController {
@GetMapping("show")
public String test(){
return "hello Spring Boot!";
}
}

六、访问localhost:8080/show,测试

spingboot建议的目录结果以下(root package结构:com.example.myproject)

com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|
注解分析
一、@EnableAutoConfiguration
注解说明:开启spring应用程序的自动配置,SpringBoot基于你所添加的依赖和你本身定义的bean,试图去猜想并配置你想要的配置。好比咱们引入了spring-boot-starter-web,而这个启动器中帮咱们添加了tomcat、SpringMVC的依赖。此时自动配置就知道你是要开发一个web应用,因此就帮你完成了web及SpringMVC的默认配置了!

二、@ComponentScan
注解说明:配置组件扫描的指令。提供了相似与<context:component-scan>标签的做用,经过basePackageClasses或者basePackages属性来指定要扫描的包。若是没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包。
咱们的@ComponentScan注解声明的类就是main函数所在的启动类,所以扫描的包是该类所在包及其子包。通常启动类会放在一个比较浅的包目录中。

三、@SpringBootApplication
它实际上是一个组合注解,这里重点的注解有3个:

@SpringBootConfiguration@EnableAutoConfiguration:开启自动配置@ComponentScan:开启注解扫描四、@SpringBootConfiguration经过查看注解的源码,发如今这个注解上面,又有一个@Configuration注解。经过上面的注释阅读咱们知道:这个注解的做用就是声明当前类是一个配置类,而后Spring会自动扫描到添加了@Configuration的类,而且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。因此通常咱们无需本身添加。

相关文章
相关标签/搜索