Spring Boot

Spring Boot

Spring Boot vs Spring

  • 内置了嵌入式的Tomcat、Jetty等Servlet容器,应用可以不用打包成War格式,而是可以直接以Jar格式运行
  • Spring Boot提倡无XML配置文件的理念,使用Spring Boot生成的应用完全不会生成任何配置代码与XML配置文件。
  • 提供了多个可选择的「starter」:
    • spring-boot-starter-data-redis:
    • spring-boot-starter-activemq:
    • spring-boot-starter-jdbc:
    • spring-boot-starter-web:
    • spring-boot-starter-actuator:

Spring Boot 全家桶

../_images/JavaEE.springboot-bucket.png

@ref: https://gitee.com/yidao620/springboot-bucket

Spring Boot 的新注解

  • @SpringBootApplication: 相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan
    • @Configuration : 指明是IOC容器的配置类, 被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境。
    • @EnableAutoConfiguration : SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置。
    • @ComponentScan : 组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下。
  • @RestController: 作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON或者是XML。使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,效果等同于通过向response.getOutputStream()写入数据
@ImportResource(locations = {"classpath:spring/spring-main.xml"})
@SpringBootApplication
public class MyApiApplication {
public static void main(String[] args) {
SpringApplication.run(MyApiApplication.class, args);
}
}

Spring Cloud

Spring Cloud 主要组件:

  • Spring Cloud Config:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。

  • Zuul:Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

  • Ribbon:提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
  • Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
  • Consul:封装了 Consul 操作,consul 是一个服务发现与配置工具,与 Docker 容器可以无缝集成。
  • Eureka:云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
  • Spring Cloud Cluster:提供 Leadership 选举,如:Zookeeper, Redis, Hazelcast, Consul 等常见状态模式的抽象和实现。
  • Spring Cloud Zookeeper:操作 Zookeeper 的工具包,用于使用 zookeeper 方式的服务发现和配置管理。
  • Spring Cloud Task:提供云端计划任务管理、任务调度。
  • Spring Cloud Data Flow:大数据操作工具,作为 Spring XD 的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。
  • Spring Cloud Stream:数据流操作开发包,封装了与 Redis,Rabbit、Kafka 等发送接收消息。

@ref: