SpringBoot2.X 简介

前言

Spring Boot好学吗?

当然了,欢迎入坑

学会使用比较容易,想要懂得怎么用的原理就很难了。

起跳准备

推荐几个常用网址:

也有几个常用的插件版本说明:

  • Jetty9.4+

  • Tomcat8.5+

  • Hibernate5.2+

  • Gradle3.4+

还有几个参考

Spring Boot 基本内容简介

组件自动装配

  • 规约大于配置,专注核心业务

  • 这里需要深入了解的是源自spring framework中的 模式注解、@Enable模块、条件装配、加载机制,Spring Boot对它们进行了修改。

外部化配置

  • 一次构建、按需调配、到处运行

  • 这里需要了解的是外部化配置与Environment抽象的关系、生命周期,
    Spring Boot2.0 用的新的API,与1.x版本部分不兼容。

嵌入式容器

  • 内置容器(传统的Servlet容器、Reactive Web)、无需部署、独立运行

  • 为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org.springframework.boot.context.embedded 包被重定向到了org.springframework.boot.web.embedded包下。举个例子,如果你要使用TomcatEmbeddedServletContainerFactory回调接口来自定义内嵌Tomcat容器,你现在应该使用TomcatServletWebServerFactory

Spring Boot Starter

  • 简化依赖、按需装配、自我包含

  • 依赖管理、条件装配、装配顺序(重要,可以参考autoconfigure包下的spring.factories文件)
    不能再自动配置HazelcastInstance进行缓存。 因此,spring.cache.hazelcast.config属性不再可用。

Production-Ready

Spring Boot 与Java EE 规范

这里可以参考一下这里也可以参考一下

  • Web:servlet
  • Sql:JDBC
  • 数据校验:Bean Validation
  • 缓存:Java Caching API
  • WebSockets:Java API for WebSocket
  • Web Services:有点久远
  • Java管理:JMX
  • 消息:JMS(Apache ActiveMQ

Spring Boot 核心特性

  • 组件自动装配:Web MVC、Web Flux、JDBC……
  • 嵌入式Web容器:Tomcat、Jetty、Undertow以及Web Flux
  • 生产特性:一些非功能特性(指标、健康检查、外部化配置等)

组件自动装配

  • 激活自动装配@EnableAutoConfiguration@SpringBootApplication注解已经默认激活)

  • 配置/METE-INF/spring.factories(前面说到过)
    有了这些Spring Boot的默认配置,我们只有引入相应的依赖,就会被自动装配。

  • 实现:xxxAutoConfiguration

嵌入式Web容器

  • Web Servlet
  • Web Reactive
    两者都是兼容的,也可以相互转换。
    这里我也了解了一下(没有亲自测试),相比于Servlet容器,在获取数据和吞吐量上来说,Web Flux 要比Servlet快很

生产特性

  • 指标/actuator/metrics
  • 健康检查/actuator/health
  • 外部化配置/actuator/configprops
    spring boot 2.0之后,需要有/actuator前缀,也可以自己配置。
    1
    2
    3
    #比如我们想把/actuator/health修改为/healthcheck。
    management.endpoints.web.base-path=/
    management.endpoints.web.path-mapping.health=healthcheck

详情请查看 [SpringBoot2.X性能监控Actuator]

Web 应用

传统Servlet应用

  • Servlet组件:Servlet、Filter、Listener

  • Servlet注册

    • Servlet注解
      • @ServletCo/mponentScan+@WebServlet、@WebFilter、@WebListener
    • Spring Bean
      • @Bean+Servlet、Filter、Listener
    • RegistrationBean(Spring Boot新API)
      • ServletRegistrationBean
      • FilterRegistrationBean
      • ListenerRegistrationBean
  • 异步非阻塞异步Servlet、非阻塞Servlet

数据操作(JDBC、JPA)

功能扩展

组件自动装配

外部化配置

https://blog.csdn.net/javastudyr/article/details/73865362

嵌入式容器

运维管理

其它介绍

自动装配

1
2
3
4
5
6
7
8
9
10
11
@ConditionalOnClass:当类路径下有指定的类的条件下。
@ConditionalOnExpression:基于SpEL 表达式作为判断条件。
@ConditionalOnJava:基于JVM 版本作为判断条件。
@ConditionalOnJndi:在JNDI 存在的条件下查找指定的位置。
@ConditionalOnMissingBean:当容器里没有指定Bean 的情况下。
@ConditionalOnMissingClass:当类路径下没有指定的类的条件下。
@ConditionalOnNotWebApplication:当前项目不是Web 项目的条件下。
@ConditionalOnProperty:指定的属性是否有指定的值。
@ConditionalOnResource:类路径是否有指定的值。
@ConditionalOnSingleCandidate:当指定Bean 在容器中只有一个,或者虽然有多个但是指定首选的Bean。
@ConditionalOnWebApplication:当前项目是Web 项目的条件下。

Spring Boot 2.x 简介


本文地址:https://www.jianshu.com/p/284b4b359dcc

本文地址: https://github.com/maxzhao-it/blog/post/50708/