Spring Boot 精要
Spring Boot的四个核心:
- 自动配置
- 起步依赖
- 命令行界面(可选特性)
- Actuactor
-
自动配置
使用JDBC访问关系型数据库
@Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(datasource); }
这段Bean声明创建了一个JdbcTemplate的实例,注入了一个DataSource依赖。
配置DataSource Bean(以H2数据库为例)
@Bean public DataSource dataSource() { return new EmbededDataBuilder() .setType(EmbededDataBaseType.H2) .addScript('schema.sql', 'data.sql') .build(); }
这个Bean配置方法创建了一个嵌入式数据库,并指定在该数据库上执行两段SQL脚本。build() 方法返回了一个指向该数据库的引用。
Spring Boot的自动配置远不止嵌入式数据库和JdbcTemplate, 还设计Java持久化(JPA)、 Thymeleaf模板、安全和Spring MVC。
-
起步依赖
起步依赖其实就是特殊的Maven依赖或者Gradle依赖,利用了传递依赖解析,把常用库聚合到一起,组成了几个为特定功能而定制的依赖。
向项目中添加Web起步依赖,实际上指定了应用程序所需的一些功能。如果应用程序需要用到JPA,那么久可以引入JPA起步依赖。如果需要安全功能,那么久可以加入security起步依赖。
-
命令行界面(CLI)
Spring Boot CLI利用了起步依赖和自动配置,让你专注于代码本身。CLI能检测到你使用了哪些类,它知道要向ClassPath中添加哪些岂不依赖才能让它运转起来。
CLI是Spring Boot的非必要组成部分,但是它大大地简化了开发。
-
Acutactor
其他三个部分旨在简化Spring开发,而Acutactor提供了在运行时检查应用程序内部情况的能力。
它能窥探应用程序内部的细节:- Spring应用程序上下文里配置的Bean
- Spring Boot自动配置做的决策
- 应用程序取到的环境变量、系统属性、配置属性和命令行参数
- 应用程序里线程的当前状态
- 应用程序最近处理过的HTTP请求的追踪情况
- 各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标。
Spring Boot不是什么
Spring Boot简化了开发,但是Spring Boot不是全能的。
-
Spring Boot不是应用服务器
Spring Boot在应用程序中嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),以实现这一功能。
-
Spring Boot没有实现JMS或JPA之类的企业级Java规范
Spring Boot确实支持不少企业级Java规范,但是要在Spring里自动配置支持那些特性的Bean。
-
Spring Boot没有引入任何形式的代码生成
Spring Boot利用了Spring 4的条件化配置特性,以及Maven和Gradle提供的传递依赖解析,以实现Spring应用程序上下文里的自动配置。