Spring Boot产生的背景和它的设计理念
1.Spring发展历史
2002年10月 Rod Johnso写了一本书《Expert One-on-One J233》,提出了一个依赖注入的概念。书中他在不使用EJB的情况下,写了30000多行的基础代码,代码根包命名为com.interface21。2003年的时候,Rod Johnson给这个框架起了个名字Spring.
2.Spring Boot的诞生
Spring的一个很大问题就是需要大量的配置和依赖管理。Spring每集成一个开源软件,就需要增加基础配置,后来人们直接称呼Spring为配置地狱。为了解决这个问题,2013年,Pivotal的CTO提出了实现免XML配置的开发体验。对于已经熟悉Spring生态系统的开发人员来说,Spring Boot是一个很理想的选择,对于采用Spring技术的新人来说,Spring提供了一种更简洁的方式来使用(这句话不是我说的,但是说的挺好的)
3.约定优于配置
约定优于配置(Convention Over Configration):开发人员仅需规定应用中不符合约定的部分,对于符合约定部分直接不用处理。这样就不需要做大量的配置了。
4.Starters
Spring Boot Starter有两个核心组件:自动配置代码和提供自动配置代码及其它有用依赖,也就是说,当项目中引入某个Starter,就可以使用这个Starter的功能,除非和默认功能不一样的地方需要单独配置,否则不需要做任何配置。
spring-boot-starter | 核心Starter,包括自动配置支持,日志和YAML |
spring-boot-starter-activemq | 用于使用Apache ActiveMQ实现JMS消息 |
spring-boot-starter-amqp | 用于使用Spring AMQP和Rabbit MQ |
spring-boot-starter-cache | 用于使用Spring框架的缓存支持 |
spring-boot-starter-data-elasticsearch | 用于使用ElasticSearch搜索,分析引擎 |
spring-boot-starter-data-jpa | 用于使用Hibernate实现Spring Data JPA |
spring-boot-starter-data-mongodb | 用于使用基于文档的数据库MongoDB |
spring-boot-starter-data-redis | 用于使用键-值数据存取Redis |
spring-boot-starter-jta-atomikos | 用于使用Atomikos实现JTA事务 |
spring-boot-starter-mail | 用于使用Java Mail和Spring 框架Email发送支持 |
spring-boot-starter-quartz | 用于定时任务Quartz的支持 |
spring-boot-starter-security | 对Spring Security的支持 |
spring-boot-starter-test | 用于得失Spring Boot应用,包括Junit,Hamcrest和Mockito |
spring-boot-starter-thymeleaf | 用于使用Thymeleaf模板引擎构建MVC Web应用 |
spring-boot-starter-validation | 用于使用Hibernate Validator 实现Java Bean校验 |
spring-boot-starter-web | 用于使用Spring MVC构建Web应用,包括RESTful,Tomcat是默认的内嵌容器 |
spring-boot-stater-websocket | 用于使用Spring框架的WebSocket支持构建WebSocket应用 |
5、Spring、Spring Boot和Spring Cloud的关系
Spring的两个主要功能是:IoC控制翻转和Aop面向切片.但是存在一个缺点就是需要大量的配置。
Spring Boot是Spring的一个升级,使用约定优于配置的理念,减少了配置。
Spring Cloud是基于Spring Boot开发的,Spring Boot可以快速的实现微服务,而Spring Cloud可以把格格微服务整合起来,简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控。