内容简介:Spring Boot是一个真正的游戏改变者,它的受欢迎程度现在不断增加。让我们看看Spring Boot到底是什么?Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种更简单、更快捷的方法来设置、配置和运行简单和基于Web的应用程序。在过去Spring框架中,我们需要为应用配置所有的内容,会有许多配置文件,例如XML或元注释,这是Spring Boot解决的主要问题之一,基本无需XML配置了,都使用@注释。Spring boot巧妙地根据我们选择的依赖配置,可以自动启动我们想要的所
Spring Boot是一个真正的游戏改变者,它的受欢迎程度现在不断增加。让我们看看Spring Boot到底是什么?Spring Boot是一个构建在Spring框架顶部的项目。它提供了一种更简单、更快捷的方法来设置、配置和运行简单和基于Web的应用程序。
在过去Spring框架中,我们需要为应用配置所有的内容,会有许多配置文件,例如XML或元注释,这是Spring Boot解决的主要问题之一,基本无需XML配置了,都使用@注释。
Spring boot巧妙地根据我们选择的依赖配置,可以自动启动我们想要的所有功能,并且只需单击一下即可启动应用程序。此外,它还简化了应用程序的部署过程。
初次使用Spring Boot可能让你感觉似乎发生了什么许多“神奇”的事情。
Spring Boot有下面几个特点:
- 用来实现微服务;
- 独立打包 直接运行
- 自动配置
- 自定义配置
- 模块化
- 内嵌服务器
- Spring cloud的基础
实现微服务
微服务是一种细小粒度的服务,可直接通过端口对外提供服务,Spring Boot提供REST风格API暴露微服务,与客户端交换采取JSON数据格式。
独立打包
Spring的主入口类是以@SpringBootApplication标注.
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
同时这个类也是 Java 的main类,SpringBoot打成Jar包是一种胖jar,兼容标准的Jar包,它的 MANIFEST.MF格式如下:
Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.mycompany.project.MyApplication
也可以打包成可执行的war 包,MANIFEST.MF格式如下:
Main-Class: org.springframework.boot.loader.WarLauncher Start-Class: com.mycompany.project.MyApplication
自动配置
@SpringBootApplication标注有下列公式:
@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan.
@EnableAutoConfiguration智能自动配置会根据添加的maven的pom.xml的依赖项自动配置加载相应的依赖组件,它能智能感知上下文。
只要在pom.xml增加相应依赖就等同于加入相应的组件:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
上面配置说明这个应用启动了pring-boot-starter-web的功能,也就是能提供REST端点暴露,让客户端通过/xxx/xx这样形式URL访问内部服务和资源。spring-boot-starter-data-jpa说明启用了JPA功能
Spring专门提供了 https://start.spring.io/ 让你选择一个SpringBoot需要的组件。
自定义配置
Spring Boot除了提供入口函数以外,还提供配置,有两种形式:application.properties和application.yaml,后一种格式在 Docker 和K8s容器编排中比较常用。比如上面启动了JPA,那么可以在applciation.properties中配置JPA的配置:
spring.datasource.url=jdbc:mysql://localhost:3306/temp spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.ddl-auto=update
这就具体指明了JPA实现使用Hibernate,具体数据库时MySQL。
Spring Cloud中各个组件的配置基本都是在这里实现,基本无需写任何代码就可以实现服务网关、服务发现和负载平衡以及断路器功能。
模块化
一般情况下,一个SpringBoot应用 = 一个微服务 = 一个模块 = 一个有边界的上下文,如果有多个模块,我们就开发多个微服务,多个SpringBoot应用,然后使用Springcloud实现它们之间动态访问和监控。 但是有时我们也会希望将多个模块放入一个SpringBoot应用中,这样模块之间调用可以在一个JVM内进行,适合小型系统的部署,随着规模扩大,我们还可将这些模块变成一个个微服务,以SpringBoot应用分布式运行。
其实就是解释@Configuration + @EnableAutoConfiguration + @ComponentScan 三个注释:
内嵌服务器
SpringBoot内嵌默认是tomcat,还有Jetty等其他服务器可以选择,tomcat配置不像过去那样我们可以直接配置,需要通过SpringBoot去配置和调度。过去的模式是:先启动服务器,再启动war应用,服务就启动了;现在的模式是直接启动服务就可以使用了。一个tomcat服务器=一个微服务。
Spring cloud的基础
Spring cloud是实现分布式微服务的组件,它的基础就是一个个Spring Boot微服务,比如服务发现就是一个嵌入了Eureka组件的Spring Boot,而服务网关则是嵌入了Zuul组件的Spring Boot,别问是如何嵌入这些组件的,在上面自动配置有讲述。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Little Schemer
[美] Daniel P. Friedman、[美] Matthias Felleisen / 卢俊祥 / 电子工业出版社 / 2017-7 / 65.00
《The Little Schemer:递归与函数式的奥妙》是一本久负盛名的经典之作,两位作者Daniel P. Friedman、Matthias Felleisen在程序语言界名声显赫。《The Little Schemer:递归与函数式的奥妙》介绍了Scheme的基本结构及其应用、Scheme的五法十诫、Continuation-Passing-Style、Partial Function、......一起来看看 《The Little Schemer》 这本书的介绍吧!