Spring是什么
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。
从原始的Servlet到EJB到Spring,我们一直饱受大量XML和依赖配置的困扰;SpringBoot的出现解决了此类问题,SpringBoot所提倡的是“约定优于配置”,即为大部分原本需要XML和注解配置的属性提供默认的配置,致力于减轻项目开发中的配置代码。
从我个人的理解而言,SpringBoot的本质即Spring,在Spring的基础上提供了一个减少配置文件、整合依赖的解决方案,当然还有增加了像诸如Actuator项目监控、Jar包运行等新特性,总体上的目标是减轻编码工作量。
SpringBoot优点
- Spring Boot使编码变简单
- Spring Boot使配置变简单
- Spring Boot使部署变简单
- Spring Boot使监控变简单
SpringBoot核心
- 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
- 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
- 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
- Actuator:让你能够深入运行中的Spring Boot应用程序。
SpringBoot不是什么
SpringBoot支持将Web程序打成Jar包的方式运行,所以可能会给人一种变成Web应用服务器,SpringBoot的依赖管理也很容易造成一种其他错觉,然而——
- Spring Boot不是应用服务器。
- Spring Boot也没有实现诸如JPA或JMS(Java Message Service,Java消息服务)之类的企业级Java规范。
- Spring Boot没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性,
- 以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置
SpringBoot的配置方式
SpringBoot的核心之一就是自动配置,但是SpringBoot也提供了自定义配置的功能,有以下几种
按照优先级排序
- 命令行参数
- java:comp/env里的JNDI属性
- JVM系统属性
- 操作系统环境变量
- 随机生成的带random.*前缀的属性(在设置其他属性时,可以引用它们,比如${random.long})
- 应用程序以外的application.properties或者application.yml文件
- 打包在应用程序内的application.properties或者application.yml文件
- 通过@PropertySource标注的属性源
- 默认属性
目前应用最为广泛的是application.properties或者application.yml,如果同时存在多个的话生效顺序如下
- 外置,在相对于应用程序运行目录的/config子目录里。
- 外置,在应用程序运行的目录里。
- 内置,在config包内。
- 内置,在Classpath根目录。