# spring-boot-demo **Repository Path**: haymai/spring-boot-demo ## Basic Information - **Project Name**: spring-boot-demo - **Description**: spring boot 学习demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Spring boot #### Spring 发展史 1. **Spring 1.x** 大概在2004年3月24日这一天,Spring Framework 1.0 final正式出现在我们的视野中 , Spring 1.0当时只包含一个完整的项目,他把所有的功能都集中在一个项目中,其中包含了核心的Ioc、AOP,同时也包含了其他的诸多功能,例如:JDBC、Mail、ORM、事务、定时任务、Spring MVC等。 只支持基于XML的配置 。 2. **Spring 2.x** ​ Spring 2.x增加对注解的支持,支持了基于注解的配置。 3. **Spring 3.x** Spring 3.x支持了基于Java类的配置。 4. **Spring 4.x** Spring 4.x全面支持Java 8.0,支持Lambda表达式的使用,提供了对@Scheduled和@PropertySource重复注解的支持,提供了空指针终结者Optional,对核心容器进行增加:支持泛型的依赖注入、Map的依赖注入、Lazy延迟依赖的注入、List注入、Condition条件注解注入、对CGLib动态代理类进行了增强。 Spring 4.x还支持了基于Groovy DSL的配置,提高Bean配置的灵活性。 Spring 4.x开始,Spring MVC基于Servlet 3.0 开发,并且为了方便Restful开发,引入了新的RestController注解器注解,同时还增加了一个AsyncRestTemplate支持Rest客户端的异步无阻塞请求。 5. **Spring 5.x** 要求将 Java 8 作为最低的 JDK 版本,同时兼容Java 9。响应式编程支持,函数式Web框架,Jigsaw的Java模块化,对Kotlin支持,舍弃的特性 #### Spring开发Hello World Web应用程序 * 一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,最起码要有Spring MVC和Servlet API这些依赖。 * 一个web.xml文件(或者一个 WebApplicationInitializer 实现),其中声明了Spring 的 DispatcherServlet 。 * 一个启用了Spring MVC的Spring配置。 * 一个控制器类,以“Hello World”响应HTTP请求。 * 一个用于部署应用程序的Web应用服务器,比如Tomcat。 > 最让人难以接受的是,这份清单里只有一个东西是和Hello World功能相关的,即控制器,剩 > 下的都是Spring开发的Web应用程序必需的通用样板。既然所有Spring Web应用程序都要用到它 > 们,那为什么还要你来提供这些东西呢? #### Spring boot 特性 * 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。 * 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。 * 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。 * Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。 ##### 自动配置 Spring Boot会为常见配置场景进行自动配置。如果Spring Boot在应用程序的Classpath里 发现H2数据库的库,那么它就自动配置一个嵌入式H2数据库。如果在Classpath里发现 JdbcTemplate ,那么它还会为你配置一个 JdbcTemplate 的Bean。你无需操心那些Bean的配置, Spring Boot会做好准备,随时都能将其注入到你的Bean里。 ##### 起步依赖 Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven依 赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制 的依赖。 假设你正在用Spring MVC构造一个REST API,并将JSON(JavaScript Object Notation)作为资源表述。此外,你还想运用遵循JSR-303规范的声明式校验,并使用嵌入式的 Tomcat服务器来提供服务。要实现以上目标,你在Maven或Gradle里至少需要以下8个依赖: org.springframework:spring-core org.springframework:spring-web org.springframework:spring-webmvc com.fasterxml.jackson.core:jackson-databind org.hibernate:hibernate-validator org.apache.tomcat.embed:tomcat-embed-core org.apache.tomcat.embed:tomcat-embed-el org.apache.tomcat.embed:tomcat-embed-logging-juli 如果你打算用Spring Boot的起步依赖,你只需添加Spring Boot的Web起步依赖 org.springframework.boot:spring-boot-starter-web ,仅此一个。它会根据依赖 传递把其他所需依赖引入项目里,你都不用考虑它们。 ##### 命令行界面 命令行工具,将强大的Spring Boot和Groovy结合到一起,针对Spring应用程序形成了一套简单而又强大的开发工具 ##### Actuator 提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。