Spring Boot是什么
百科定义
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
同类技术
- jboot
- Jeecg-P3
对比同类技术优缺点
- 优点
1.去除了大量的xml配置文件
2.简化复杂的依赖管理
3.配合各种starter使用,基本上可以做到自动化配置
4.快速启动容器
5.配合Maven或Gradle等构件工具打成Jar包后,Java -jar 进行部署运行比较简单
6.创建独立Spring应用程序,嵌入式Tomcat,Jetty容器,无需部署WAR包,简化Maven及Gradle配置,尽可能的自动化配置Spring,直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等,无需代码生成及XML配置。 - 缺点
1.从原来的xml配置方式转换到JAVA配置方式变化有点大,不太适应
2.Spring Boot 比较适合做微服务,不适合做比较大型的项目。
组成成分
- spring-boot模块
该模块提供了一些特性用来支持springboot中其他模块,这些特性包含如下。
SpringApplication类提供了静态方法以便于写一个独立了spring应用程序,该类的主要职责是create和refresh一个合适的Spring 应用程序上下文(ApplicationContext)给web应用提供了一个可选的web容器(目前有Tomcat或Jetty),一流的外部配置的支持(application.properties),提供了便捷的应用程序上下文(ApplicationContext)的初始化器,以便在ApplicationContext使用前对其进行用户定制。 - spring-boot-autoconfigure模块
springboot可以依据classpath里面的依赖的内容来自动配置bean到IOC容器,但是要开启这个自动配置功能需要添加@EnableAutoConfiguration注解。Auto-configuration会尝试推断哪些beans是用户可能会需要的。比如如果HSQLDB包在当前classpath下,并且用户并没有配置其他数据库链接,这时候Auto-configuration功能会自动注入一个基于内存的数据库连接到应用的IOC容器。
目前 auto-configuration 提供以下类型的注入:
Web (Tomcat or Jetty, Spring MVC)
JDBC (Commons DBCP, embedded databases, jdbcTemplate)
JPA with Hibernate
Spring Data JPA (automatically detecting Repository classes)
Spring Batch (including JobLauncherCommandLineRunners and database initialization)
Thymeleaf templating
Reactor asynchronous JVM programming
auto-configuration使用在class上标注@Configuration注解实现,并且使用@Configuration的时候一般带有一定的约束,比如同时还在Class上标注了 @ConditionalOnClass(当前classpath下存在类) 和@ConditionalOnMissingBean(当前IOC容器不存在bean)注解。这保证了classpath下存在一些相关的类并且需要的bean还没有被注入到IOC时候auto-configuration才生效。 - 1.3、 spring-boot-starters模块
Starters是一组可以方便使用的依赖描述,starter里面一般只有一个POM文件,pom文件里面添加了Spring框架和一些相关的功能模块的依赖配置,你需要使用某些功能时候在也不需要到处查找需要的功能都是那些jar包提供的并配置到POM文件了。比如如果你想要使用Spring和JPA作为数据库存取,你需要引入spring-boot-starter - 1.4、 spring-boot-actuator模块
SpringBoot还提供了许多附加功能,可以帮助我们在应用程序部署到生产环境后对其进行监控和管理。springboot提了http,jmx,shell等公交来管理和监控我们的应用程序。另外审计,监控和性能指标的?可以自动应用到应用程序上。 - 1.5、 spring-boot-cli模块
Spring Boot CLI是一个命令行公交用来快速搭建一个spring原型应用,并且可以运行Groovy脚本。 - 1.6、 spring-boot-loader模块
Spring Boot Loader模块允许我们使用java -jar archive.jar运行包含嵌套依赖的jar或者war文件,
Spring Boot Loader提供了三种类启动器 (JarLauncher, WarLauncher and PropertiesLauncher),这些类启动器的目的一样都是加载嵌套在jar里面的资源(比如class文件,配置文件等)。[Jar|War]Launcher固定去查找当前jar的lib目录里面的嵌套jar文件里面的资源。
Spring Boot为什么会出现
Spring Boot的用途
使用springboot很容易创建一个独立运行的spring项目,并且可以几乎不使用spring配置或者使用很少的配置。
Spring Boot出现之前的状况
一个web项目需要添加大量的依赖和xml配置
需要部署tomcat,jetty等来启动项目
SpringBoot应用
官方示例
https://spring.io/projects/spring-boot#learn