Spring Boot 的核心:约定优于配置
约定优于配置,也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量、获得简单的好处,而又不失灵活性。
本质是说,开发人员仅需规定应用中不符合约定的部分。如:模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为 “user_info”,才需写有关这个名字的配置。
在 Spring 体系中,Spring Boot JPA 就是约定优于配置最佳实现之一,不需要关注表结构,我们约定类名即是表名,属性名即是表的字段,String 对应 varchar,long 对应 bigint,只有需要一些特殊要求的属性,我们再单独进行配置,按照这个约定我们可以将以前的工作大大简化。
Spring Boot Starters
Spring Boot Starters 基于约定优于配置的理念来设计,Spring Boot Starter 中有两个核心组件:自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着当我们项目中引入某个 Starter,即拥有了此软件的默认使用能力,除非我们需要特定的配置,一般情况下我仅需要少量的配置或者不配置即可使用组件对应的功能。
Spring Boot 由众多 Starter 组成,随着版本的推移 Starter 家族成员也与日俱增。在传统 Maven 项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在 Spring Boot 项目中我们则可以创建自定义 Spring Boot Starter 来达成该目的。
以下为常用的 Spring Boot 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 Data ElasticSearch |
spring-boot-starter-data-jpa | 用于使用 Hibernate 实现 Spring Data JPA |
spring-boot-starter-data-mongodb | 用于使用基于文档的数据库 MongoDB 和 Spring Data MongoDB |
spring-boot-starter-data-redis | 用于使用 Spring Data Redis 和 Jedis 客户端操作键—值数据存储 Redis |
spring-boot-starter-jta-atomikos | 用于使用 Atomikos 实现 JTA 事务 |
sring-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-starter-websocket | 用于使用 Spring 框架的 WebSocket 支持构建 WebSocket 应用 |