SpringBoot

目录

1 什么是 Spring Boot

2 Spring Boot 特征

3 Spring Boot 版本介绍

4 Spring Boot 项目结构介绍

1 POM 文件

2 启动类

3 启动器

4 配置文件

5 Spring Boot 的核心注解

5.1@SpringBootApplication

5.2@SpringBootConfiguration

5.3@Configuration

5.4@EnableAutoConfiguration

5.5@AutoConfigurationPackage

5.6@Import({AutoConfigurationImportSelector.class})

5.7@ComponentScan

6 Spring Boot 在 Controller 中常用注解

6.1@RestController

6.2@GetMapping

6.3@PostMapping

6.4@PutMapping

6.5@DeleteMapping

 7 Spring Boot 访问静态资源

1 static 目录

2 templates 目录

3 静态资源存放其他位置

3.1Spring Boot 访问静态资源的位置

3.2自定义静态资源位置


1 什么是 Spring Boot

Spring Boot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简
化是指简化了 Spring 众多框架中所需的大量且繁琐的配置文件,所以 Spring Boot 是一个服
务于框架的框架,服务范围是简化配置文件。所以从本质上来说, Spring Boot 其实就是 Spring
框架的另一种表现形式。

2 Spring Boot 特征

 使用 Spring Boot 可以创建独立的 Spring 应用程序
 在Spring Boot 中直接嵌入了 Tomcat 、Jetty、 Undertow Web 容器,所以在使用 SpringBoot
Web 开发时不需要部署 WAR 文件
 通过提供自己的启动器(Starter) 依赖,简化项目构建配置
 尽量的自动配置 Spring 和第三方库
 提供了生产就绪特征,如:度量指标,运行状况检查和外部化配置
 绝对没有代码生成,也不需要 XML 配置文件

3 Spring Boot 版本介绍

SNAPSHOT :快照版,即开发版。
CURRENT :最新版,但是不一定是稳定版。
GA General Availability ,正式发布的版本

Spring Boot 项目结构介绍

1 POM 文件

1.1 继承
< parent >
< groupId >org.springframework.boot</ groupId >
< artifactId >spring-boot-starter-parent</ artifactId >
< version >2.2.0.RELEASE</ version >
< relativePath /> <!-- lookup parent from repository -->
</ parent >
Spring Boot 的父级依赖,只有继承它项目才是 Spring Boot 项目。
spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖。使
用它之后,常用的包依赖可以省去 version 标签。
1.2 依赖

启动器依赖

1.3插件

 

spring-boot-maven-plugin 插件是将 springboot 的应用程序打包成 jar 包的插件。将所有
应用启动运行所需要的 jar 包都包含进来,从逻辑上将具备了独立运行的条件。当运行 "mvn
package" 进行打包后,使用 "java -jar" 命令就可以直接运行。

2 启动类

Spring Boot 的启动类的作用是启动 Spring Boot 项目,是基于 Main 方法来运行的。
注意:启动类在启动时会做注解扫描 (@Controller @Service @Repository......) ,扫描
位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。
2.1 启动类与启动器区别:
 启动类表示项目的启动入口
 启动器表示 jar 包的坐标

3 启动器

Spring Boot 将所有的功能场景都抽取出来,做成一个个的 starter( 启动器 ) ,只需要在项
目里面引入这些 starter 相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景,
jar 包管理上非常方便,最终实现一站式开发。
Spring Boot 提供了多达 44 个启动器。
spring-boot-starter
这是 Spring Boot 的核心启动器,包含了自动配置、日志和 YAML
spring-boot-starter-actuator
帮助监控和管理应用。
spring-boot-starter-web
支持全栈式 Web 开发,包括 Tomcat spring-webmvc
spring-boot-starter-amqp
通过 spring-rabbit 来支持 AMQP 协议( Advanced Message Queuing Protocol )。
spring-boot-starter-aop
支持面向方面的编程即 AOP ,包括 spring-aop AspectJ
spring-boot-starter-artemis
通过 Apache Artemis 支持 JMS API Java Message Service API )。
spring-boot-starter-batch
支持 Spring Batch ,包括 HSQLDB 数据库。
spring-boot-starter-cache
支持 Spring Cache 抽象。
spring-boot-starter-cloud-connectors
支持 Spring Cloud Connectors ,简化了在像 Cloud Foundry Heroku 这样的云平台上连
接服务。
spring-boot-starter-data-elasticsearch
支持 ElasticSearch 搜索和分析引擎,包括 spring-data-elasticsearch
spring-boot-starter-data-gemfire
支持 GemFire 分布式数据存储,包括 spring-data-gemfire
spring-boot-starter-data-jpa 支持 JPA Java Persistence API ),包括 spring-data-jpa spring-orm Hibernate
spring-boot-starter-data-mongodb
支持 MongoDB 数据,包括 spring-data-mongodb
spring-boot-starter-data-rest
通过 spring-data-rest-webmvc ,支持通过 REST 暴露 Spring Data 数据仓库。
spring-boot-starter-data-solr
支持 Apache Solr 搜索平台,包括 spring-data-solr
spring-boot-starter-freemarker
支持 FreeMarker 模板引擎。
spring-boot-starter-groovy-templates
支持 Groovy 模板引擎。
spring-boot-starter-hateoas
通过 spring-hateoas 支持基于 HATEOAS RESTful Web 服务。
spring-boot-starter-hornetq
通过 HornetQ 支持 JMS
spring-boot-starter-integration
支持通用的 spring-integration 模块。
spring-boot-starter-jdbc
支持 JDBC 数据库。
spring-boot-starter-jersey
支持 Jersey RESTful Web 服务框架。
spring-boot-starter-jta-atomikos
通过 Atomikos 支持 JTA 分布式事务处理。
spring-boot-starter-jta-bitronix
通过 Bitronix 支持 JTA 分布式事务处理。
spring-boot-starter-mail
支持 javax.mail 模块。
spring-boot-starter-mobile
支持 spring-mobile spring-boot-starter-mustache
支持 Mustache 模板引擎。
spring-boot-starter-redis
支持 Redis 键值存储数据库,包括 spring-redis
spring-boot-starter-security
支持 spring-security
spring-boot-starter-social-facebook
支持 spring-social-facebook
spring-boot-starter-social-linkedin
支持 pring-social-linkedin
spring-boot-starter-social-twitter
支持 pring-social-twitter
spring-boot-starter-test
支持常规的测试依赖,包括 JUnit Hamcrest Mockito 以及 spring-test 模块。
spring-boot-starter-thymeleaf
支持 Thymeleaf 模板引擎,包括与 Spring 的集成。
spring-boot-starter-velocity
支持 Velocity 模板引擎。
spring-boot-starter-websocket
支持 WebSocket 开发。
spring-boot-starter-ws
支持 Spring Web Services
spring-boot-starter-actuator
增加了面向产品上线相关的功能,比如测量和监控。
spring-boot-starter-remote-shell
增加了远程 ssh shell 的支持。
spring-boot-starter-jetty 引入了 Jetty HTTP 引擎(用于替换 Tomcat )。
spring-boot-starter-log4j
支持 Log4J 日志框架。
spring-boot-starter-logging
引入了 Spring Boot 默认的日志框架 Logback
spring-boot-starter-tomcat
引入了 Spring Boot 默认的 HTTP 引擎 Tomcat
spring-boot-starter-undertow
引入了 Undertow HTTP 引擎(用于替换 Tomcat )。

4 配置文件

Spring Boot 提供一个名称为 application 的全局配置文件,支持两种格式 properteis 格式
YAML 格式。
4.1Properties 格式
配置 Tomcat 监听端口

4.2YAML 格式

YAML 格式配置文件的扩展名可以是 yaml 或者 yml

4.2.1基本格式要求

 大小写敏感
 使用缩进代表层级关系
 相同的部分只出现一次
配置 Tomcat 监听端口

4.3配置文件存放位置

 当前项目根目录中
 当前项目根目录下的一个/config 子目录中
 项目的 resources classpath 根路径中
 项目的 resources classpath 根路径下的 /config 目录中
4.4 配置文件加载顺序
        4.4.1不同格式的加载顺序
如 果 同 一 个 目 录 下 , 有 application.yml 也 有 application.properties , 默 认 先 读 取
application.properties
如果同一个配置属性,在多个配置文件都配置了,默认使用第 1 个读取到的,后面读取
的不覆盖前面读取到的。
        4.4.2 不同位置的加载顺序
                4.4.2.1 当前项目根目录下的一个/config 子目录中 ( 最高 )
config/application.properties
config/application.yml
                4.4.2.2 当前项目根目录中( 其次 )
application.properties
application.yml
                4.4.2.3 项目的 resources classpath 根路径下的 /config 目录中 ( 一般 )
resources/config/application.properties
resources/config/application.yml
                4.4.2.4 项目的 resources classpath 根路径中 ( 最后 )
resources/application.properties
resources/application.yml
4.5 配置文件中的占位符
        4.5.1 占位符语法
语法: ${}
4.5.2 占位符作用
 "${}"中可以获取框架提供的方法中的值如: random.int 等。
 占位符可以获取配置文件中的键的值赋给另一个键作为值。
4.5.3 生成随机数
${random.value} - 类似 uuid 的随机数,没有 "-" 连接
${random.int} - 随机取整型范围内的一个值
${random.long} - 随机取长整型范围内的一个值
${random.long(100,200)} - 随机生成长整型 100-200 范围内的一个值
${random.uuid} - 生成一个 uuid ,有短杠连接
${random.int(10)} - 随机生成一个 10 以内的数
${random.int(100,200)} - 随机生成一个 100-200 范围以内的数
4.6bootstrap 配置文件
        4.6bootstrap 配置文件
Spring Boot 中有两种上下文对象,一种是 bootstrap, 另外一种是 application, bootstrap
是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。 bootstrap 主要用于从
额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一
个环境,它是任何 Spring 应用程序的外部属性的来源。 bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
        4.6.2bootstrap 配置文件特征
application 配置文件主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连 接到配置中心的配置属性来加载外部配置中心的配置信息。
 一些固定的不能被覆盖的属性。
 一些加密/ 解密的场景。

5 Spring Boot 的核心注解

5.1@SpringBootApplication

SpringBoot 的启动类。
此注解等同于 @Configuration+@EnableAutoConfiguration+@ComponentScan 的组合。

5.2@SpringBootConfiguration

@SpringBootConfiguration 注解是 @Configuration 注解的派生注解,跟 @Configuration
注解的功能一致,标注这个类是一个配置类,只不过 @SpringBootConfiguration springboot
的注解,而 @Configuration spring 的注解

5.3@Configuration

通过对 bean 对象的操作替代 spring xml 文件

5.4@EnableAutoConfiguration

Spring Boot 自动配置( auto-configuration ):尝试根据你添加的 jar 依赖自动配置你的
Spring 应用。是 @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class)
注解的组合。

5.5@AutoConfigurationPackage

@AutoConfigurationPackage 注解,自动注入主类下所在包下所有的加了注解的类
@Controller @Service 等),以及配置类( @Configuration

5.6@Import({AutoConfigurationImportSelector.class})

直接导入普通的类
导入实现了 ImportSelector 接口的类
导入实现了 ImportBeanDefinitionRegistrar 接口的类

5.7@ComponentScan

组件扫描,可自动发现和装配一些 Bean 5.8@ConfigurationPropertiesScan
@ConfigurationPropertiesScan 扫描配置属性。 @EnableConfigurationProperties 注解的作
用是使用 @ConfigurationProperties 注解的类生效。

Spring Boot Controller 中常用注解

6.1@RestController

@RestController 相当于 @Controller+@ResponseBody 注解
如果使用 @RestController 注解 Controller 中的方法无法返回页面,相当于在方法上面自
动 加 了 @ResponseBody 注 解 , 所 以 没 办 法 跳 转 并 传 输 数 据 到 另 一 个 页 面 , 所 以
InternalResourceViewResolver 也不起作用,返回的内容就是 Return 里的内容。

6.2@GetMapping

@GetMapping 注解是 @RequestMapping(method = RequestMethod.GET) 的缩写。

6.3@PostMapping

@PostMapping 注解是 @RequestMapping(method = RequestMethod.POST) 的缩写。

6.4@PutMapping

@PutMapping 注解是 @RequestMapping(method = RequestMethod.PUT) 的缩写。

6.5@DeleteMapping

@DeleteMapping 注解是 @RequestMapping(method = RequestMethod.DELETE) 的缩写。

 

 7 Spring Boot 访问静态资源

SpringBoot 项目中没有我们之前常规 web 开发的 WebContent WebApp ),它只有
src 目录。在 src/main/resources 下面有两个文件夹,
static templates SpringBoot 默认在 static
目录中存放静态页面,而 templates 中放动态页面。

1 static 目录

Spring Boot 通过 classpath/static 目录访问静态资源。注意存放静态资源的目录名称必须
static

2 templates 目录

Spring Boot 中不推荐使用 jsp 作为视图层技术,而是默认使用 Thymeleaf 来做动态页
面。 Templates 目录这是存放 Thymeleaf 的页面。

3 静态资源存放其他位置

3.1Spring Boot 访问静态资源的位置

classpath:/META INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/

3.2自定义静态资源位置

# 配置静态资源访问路径
spring.resources.static-locations = classpath:/suibian/,cla
sspath:/static/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值