b spring boot 简单介绍

—> go to 总目录


照着演讲资料的去写的简单易懂,同时兼顾技术文档的条理性和深入性。
spring是一个单纯的java开发框架,spring-boot是把脚手架也做了进去,构建、打包和不同层面模块的集成,都做了更好的优化。
文档写的非常好。

1. Overview

详见1

2. Getting started

what,how and why have the Spring boot。

2.1 spring boot 是什么

使创建一个独立部署,产品级的spring-based的应用更容易。
目的

  • 对于Spring的开发者,提供更快和更广泛的开始
  • 开箱即用,但是又可以对变化的需求快速的响应
  • 为项目提供大量且广泛的非功能性需求(内嵌的servers,安全,metric,health checks 和扩展性配置)
  • 绝对没有代码生成和不需要xml配置

2.2 系统需求

System Requirements

2.2.1 Servlet Containers

在这里插入图片描述

2.3 安装Spring boot

要求JDK 8+

2.3.1 安装基础软件

maven

maven 3.3+ ,idea直接解决

gradle

2.3.2 Spring Boot CLI 安装

2.3.3 Spring boot版本的升级

旧版本的升级。

2.4 开发第一个Spring boot应用(傻瓜式不讲解)

关注点在于基础pom的作用

2.4.1 创建pom

在这里插入图片描述

2.4.2 添加依赖

Starters

Spring boot提供很多"Starters",让你去把jar添到classpath。使用spring-boot-starter-parent去做冒烟测试。
同时spring-boot-starter-parent也会提供有用的Maven默认设置。
比如这会用一个spring-boot-starter-web
在这里插入图片描述

写几行代码 code

在这里插入图片描述
@RestController 相当于@Controller + @ResponseBody。@ResponseBody就是把返回值序列化成字符串。
@EnableAutoConfiguration
会猜测你的配置比如spring-boot-starter-web就会猜你要开启Spring MVC和Tomcat,它会初始化一系列的bean。

auto-configuration被设计来和"Starters"一起工作,但是两个概念没有强绑。你可以自有的选择在starters之外的jar包,Spring Boot 也会做最好的自动配置。

运行 run

maven 命令去执行
在这里插入图片描述

打包 jar(fat jar的由来)

我们的例子依赖着包含着容器的jar文件(意味值包含依赖)。执行的jar包有时候会被称为"fat jars",它会包含你运行时的所有依赖。

Executable jars和Java
java本身不能提供一个标准的方式去内嵌依赖的jar文件。当你想要发布一个容器的应用的时候,可能会有问题(没依赖)。
解决的办法是很多开发者使用了uber的jars。一个uber的jar打包了所有应用的依赖到一个独立的结构里面。这种方式的问题是很难去看到你应用里到底用了那些libraries,也会导致同名文件的覆盖。Spring Boot 会采取不同的方法让你内嵌jar包,后面会讲到。

maven插件负责来打包,需要把这个加到pom中去
在这里插入图片描述

3使用 Spring Boot

这个章节告诉你使用SpringBoot的细节

3.1 构建系统

推荐你是用成熟的构建系统比如maven和Gradle,也方便去推送到maven仓库。也支持其他系统比如Ant

  • maven
  • grale
  • ant

3.1.1 依赖管理

3.1.2 maven

使用spring-boot-starter-parent来设定默认设置。

  • Java 1.8作为默认编译级别
  • UTF-8 source encoding
  • 依赖管理的继承,使你不用取指定一些依赖的version自动获得默认的版本
  • 打包阶段会有 repacke的标记
  • 明智的 resource filtering
  • 明智的插件管理(exec plugin,Git commit ID 和shade)
  • 明智的的资源 过滤,对application.properties和application.yml

注意application.properties和application.yml接受${…}
maven接受@..@占位符,你也可以使用resource.delimiter来覆盖maven的属性。

3.1.5 Starts列表

Starter是一些列便利的依赖描述器包含在你的应用里。可以一站式获取spring的特性,甚至不需要复制粘贴或者通过简单的的code来体验。比如你想要使用Spring 和JPA来访问database,仅许哟在你的依赖里包含
spring-boot-starter-data-jpa
starter包含了大量你需要添加在项目里的依赖。

什么是name
所有官方的offical starter都有相似的开始spring-boot-starter-*。这个命名结构意味着帮你用name去找到starters。
下列创建一个你自己的starter里面会介绍,第三方的starter不应该以spring-boot开头,推荐thirdpartyproject-spring-boot-starter

starter列表

3.2 结构化你的代码

好的实践

3.2.1 使用defaultPackage

当一个类没有packge声明的时候,它被默认在defalut。但是默认的package应该被避免。因为使用
@ComponentScan, @ConfigurationPropertiesScan, @EntityScan, 或者 @SpringBootApplication,每一个jar里面的类都会被读到。

3.2.2 定位main的应用类

我们推荐把应用的main类放在root package下。@SpringBootApplication注解常常会替代你的主类,也会影响到你搜索路径路径包的base package。例如被和JPA一起使用时,@SpringBootApplication注解类标注的注解,会搜索所有@Entity。使用root package的好处是会搜索项目里所有的组件。

典型的代码结构

在这里插入图片描述

@SpringBootApplication标注的main

在这里插入图片描述

3.3 配置类

虽然可以使用xml来配置,但是推荐使用单独的@Configuration类配置。

3.3.1 导入额外的配置类

你需要把你所有的@Configuration 都导入一个单独的类@Import。出此外你可以使用@ComponentScan会自动捡起所有的Spring 组件,包括@Configuration

3.3.2 Importing XML Configuration

我们推荐你用@Configuration,但是你还是可以使用@ImportResource去加载。

3.4 Auto-configuration

这个机器企图去根据你添加的jar依赖,来自动自动配置。比如HSQLDB在你的classpath下,无需手动,Spring auto-config会自动在内存中配置好database。
你需要做的是添加@EnableAutoConfiguration
或者@SpringBootApplication到你的一个@Configuration类上。

由于只需要添加一个
@EnableAutoConfiguration
或者@SpringBootApplication,所以我们推荐你添加在你主要的@Configuration就可以了。

3.4.1 灰度替换 Auto-configuration

自动配置是无侵入的,但是你有时需要去用自己的配置来代替自动配置。比如你定义了DataSourcebean。默认的内嵌database就作为被封。
如果你需要去看那些自动装配被使用了,启动你的应用时附带-debug。这样会打开debug的log

3.4.2 关掉特殊的自动装配。

使用exclude去除
在这里插入图片描述
如果不在classpath路径下,你可以使用excludeName属性去匹配。
如果你不用@SpringBootApplication而是使用@EnableAutoConfiguration,的话,也可以使用excludeexcludeName。最终你也可以用
spring.autoconfigure.exclude

3.5 依赖注入 Spring Beans and Dependency Injection

你依旧可以使用@ComponentScan和@Autowired。
如果你的代码结构像上面介绍的那样,仅需要@ComponentScan,就可以自动注册
@Component, @Service, @Repository, @Controller
下面使用构造器的方式去初始化bean
在这里插入图片描述
如果一个类只有一个构造器可以省去@Autowired
在这里插入图片描述

注意final 意味着不能被子类改变

3.6 使用 @SpringBootApplication Annotation

  • @EnableAutoConfiguration会自动打开自动auto-configuration装置
  • @ComponmentScan,会自动扫描application所在的包的所有@Compent
  • @Configuration:荀彧在context里注册额外的beans,或导入额外的配置类。
    在这里插入图片描述

没有什么东西是强制的,不想用auto-configuration和CompentScan时,你可以选择关闭掉。

在这里插入图片描述

3.7 启动你的应用

在你的应用中内置一个HTTP server的最大好处是,你可以随时的运行它,而不要额外的插件或者扩展。spring boot也是。

3.7.1 打开你的IDE

导入

方式一:可执行包

打成执行包使用java -jar

方式二:使用maven

mvn spring-boot run
可以用MAVEN_OPTS=-Xmx1024m来控制maven环境变量

方式三: 热替换

spring boot只是仅仅继承了java应用和jvm热替换,开箱即用。
spring-boot-devtools种包含了热替换

3.8 Developer Tools 开发工具

开发工具有一堆工具在开发阶段有用
引入
在这里插入图片描述

3.8.1 设置默认属性

3.8.2 自动重启

3.8.2 热加载

3.8.4 全局设置

3.8.5 远程应用

远程应用启动

远程更新

监控文件变动

3.9 为生产环境打包

可执行的jar,本来就是一个fat.jar,包含了需要的依赖,所以适合云环境下的部署。
对于生产环境额外的特性,比如健康检查,auditing,或者metric Rest或者JMX终端,考虑添加spring-boot-actuator

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值