前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎样学习 SpringBoot?

怎样学习 SpringBoot?

作者头像
网络技术联盟站
发布2019-10-15 22:59:35
5540
发布2019-10-15 22:59:35
举报

学习 SpringBoot 需要做哪些准备?

  • IDE:IDEA
  • 基础工具:JDK1.8、Maven

SpringBoot 背景介绍

什么是 SpringBoot? Spring Boot是 Spring 开源组织下的一个子项目,也是 Spring 组件一站式解决方案,主要是为了简化使用 Spring 框架的难度,简省繁重的配置.

Spring Boot提供了各种组件的启动器(starter),开发者只要能配置好对应组件参数,Spring Boot 就会自动配置,让开发者能快速搭建依赖于 Spring 组件的 Java 项目.

Spring Boot不但能创建传统的 war 包应用,还能创建独立的不依赖于任何外部容器(如:tomcat)的独立应用,使用java -jar 命令就能启动.

SpringBoot 的设计目标
  • 为 Spring 应用开发提供一个更快、更容易上手的入门体验
  • 提供一系列在经常用到的公共的非功能性特性,如:内嵌入服务器、安全、度量指标、健康检测、外部化配置
  • 零代码配置生成及零 XML 配置

SpringBoot 包含哪些特性

首先,需要知道,SpringBoot 工程(应用)与普通的 Java/Spring 应用没有任何区别,或不一样的实现形式。简单的说,你只要在 pom 文件中加上了 SpringBoot 所必须的 parent 和相关依赖,这就是一个 SpringBoot 应用。

当你理解了 Spring,学习 SpringBoot,是一件很简单的事,因为它只是简化了对 Spring 的使用与配置。除此之外,它也提供了一些功能强大且方便的特性。这里,我介绍一些最为常用的特性。

应用启动入口

注解 @SpringBootApplication

三种启动方式

  • SpringApplication 的静态方法 run
  • 通过 SpringApplication 的 Api调整应用行为
  • SpringApplicationBuilder 的 Fluent Api,可以实现链式调用
自动配置的原理

简单的说,自动配置就是会根据在类路径中的jar、类自动配置Bean。Spring Boot将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目里面引入这些starter,相关场景的所有依赖都会导入进来。

自动配置的实现是基于三个重要的注解实现的(实际就是 @SpringBootApplication 注解):

  • @SpringBootConfiguration 类似于 @Configuration
  • @EnableAutoConfiguration 开启自动配置的功能
  • @ComponentScan 扫描注解,扫描 classpath 下的定义的 bean,即 将@Controller、@Service、@Component、@Repository等注解加载到IOC容器中
配置文件优先级

同一个目录下的 application 和 bootstrap

  • bootstrap 优先级高于 application,优先被加载
  • bootstrap 用于应用程序上下文的引导阶段,由父 ApplicationContext 加载
  • bootstrap 是系统级别的配置(不变的参数),application 是应用级别的配置 不同位置的配置文件加载顺序(优先级)

file:./config/ - 优先级最高(项目根路径下的 config) file:./- 优先级第二(项目根路径下) classpath:/config/ - 优先级第三(项目 resources/config 下) classpath:/ - 优先级第四(项目 resources 目录下) 高优先级覆盖低优先级相同配置、多个配置文件互补

配置注入的方式
  • 直接使用 @Value
  • 使用 @ConfigurationProperties + prefix 的方式
Jackson 的使用技巧

通常在项目中处理JSON一般用的都是阿里巴巴的fastjson, 后来发现使用Spring Boot内置的Jackson来完成JSON的序列化和反序列化操作也是非常方便的。

  • @JsonProperty,作用在属性上,用来为JSON Key指定一个别名
  • @Jsonlgnore,作用在属性上,用来忽略此属性
  • @JsonIgnoreProperties,忽略一组属性,作用于类上
  • @JsonFormat,用于日期格式化

Jackson通过使用ObjectMapper的writeValueAsString方法将Java对象序列化为JSON格式字符串 反序列化使用 ObjectMapper 的 readValue

定时任务

在 SpringBoot 中开启定时任务需要做两件事:

  • @EnableScheduling:允许当前的应用开启定时任务
  • @Scheduled:指定定时任务的运行规则
异步任务

通常代码都是顺序执行(一行一行的执行),这也就是同步调用。但是异步编程却没有这样的限制,代码执行并不是阻塞的。可以直接调用不用等待返回,而是在某一个想要获取结果的时间点再去获取结果。在 SpringBoot 应用中编写异步代码:

引入spring-boot-starter-web依赖
  • 在SpringBoot入口类上加上 @EnableAsync 注解,开启异步支持
  • 只需要在方法上加上 @Async 注解,则当前方法就是异步方法
  • 默认情况下的异步线程池配置使得线程不能被重用,每次调用异步方法都会新建一个线程,我们可以自己定义异步线程池来优化。
单元测试

编写单元测试可以帮助开发人员编写高质量的代码,提升代码质量,减少Bug,便于重构。SpringBoot提供了一些实用程序和注解,用来帮助我们测试应用程序,在SpringBoot中开启单元测试只需引入spring-boot-starter-test即可,其包含了一些主流的测试库。

一个标准的SpringBoot测试用例应该包含两个注解:
  • @SpringBootTest:意思是带有 SpringBoot 支持的引导程序,其中提供了可以指定 Web 环境的参数
  • @RunWith(SpringRunner.class):告诉JUnit运行使用Spring的测试支持。SpringRunner是SpringJUnit4ClassRunner的新名字,这个名字只是让名字看起来简单些
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络技术联盟站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot 背景介绍
  • SpringBoot 包含哪些特性
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档