一、Spring Boot 概述
- Spring Boot发展背景
- Spring Boot特点
1、为开发者提供Spring快速入门体验。
2、内嵌Tomcat和Jetty容器,不需要部署WAR文件到Web容器就可独立运行应用。
3、提供许多基于Maven的pom配置模板来简化工程配置。
4、提供实现自动化配置的基础设施。
5、提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。
6、开箱即用,没有代码生成,也无须XML配置文件,支持修改默认值来满足特定需求。 - 三、Spring Boot启动器
spring-boot-starter 核心模块,包含自动配置支持、日志库和对YAML配置文件的支持
spring-boot-starter-amqp 支持AMQP,包含spring-rabbit
spring-boot-starter-aop 支持面向切面编程(AOP),包含spring-aop和AspectJ
spring-boot-starter-artemis 通过Apache Artemis支持JMS的API(Java Message Service API)
spring-boot-starter-batch 支持Spring Batch,包含HSQLDB
spring-boot-starter-cache 支持Spring的Cache抽象
spring-boot-starter-cloud-connectors 支持Spring Cloud Connectors,
简化了在像Cloud Foundry或Heroku这样的云平台上连接服务
spring-boot-starter-data-gemfire 支持GemFire分布式数据存储,包含spirng-data-gemfire
spring-boot-starter-data-jpa 支持JPA,包含spirng-data-jpa、spring-orm和Hibernate
spring-boot-starter-data-elasticsearch 支持ElasticSearch搜索和分析引擎,包含spring-data-elasticsearch
spring-boot-starter-data-solr 支持Apache Solr搜索平台,包含spring-data-solr
spring-boot-starter-data-mongodb 支持MongoDB,包含spring-data-mongodb
spring-boot-starter-data-rest 支持以REST方式暴露Spring Data仓库,包含spring-data-rest-webmvc
spring-boot-starter-redis 支持Redis键值存储数据库,包含spring-redis
spring-boot-starter-jdbc 支持使用JDBC访问数据库
spring-boot-starter-jta-atomikos 通过Atomikos支持JTA分布式事务处理
spring-boot-starter-jta-bitronix 通过Bitronix支持JTA分布式事务处理
spring-boot-starter-security 包含spring-security
spring-boot-starter-test 包含常用的测试所需的依赖,
如TestNG、Hamcrest、Mockito和spring-test等
spring-boot-starter-velocity 支持使用Velocity作为模板引擎
spring-boot-starter-freemarker 支持FreeMarker模板引擎
spring-boot-starter-thymeleaf 支持Thymeleaf模板引擎,包括Spring的集成
spring-boot-starter-mustache 支持Mustache模板引擎
spring-boot-starter-web 支持Web应用开发,
包含tomcat、spring-mvc、spring-webmvc和jackson
spring-boot-starter-websocket 支持使用Tomcat开发WebSocket应用
spring-boot-starter-ws 支持Spring Web Services
spring-boot-starter-groovy-templates 支持Groovy模板引擎
spring-boot-starter-hateoas 通过spring-hateoas支持基于Hateoas的RESTful Web服务
spring-boot-starter-hornetq 通过HornetQ支持JMS
spring-boot-starter-log4j 添加Log4j的支持
spring-boot-starter-logging 使用Spring Boot默认的日志框架Logback
spring-boot-starter-integration 支持通用的spring-integration模块
spring-boot-starter-jersey 支持Jersey RESTful Web服务框架
spring-boot-starter-mail 支持javax.mail模块
spring-boot-starter-mobile 支持spring-mobile
spring-boot-starter-social-facebook 支持spring-social-facebook
spring-boot-starter-social-linkedin 支持spring-social-linkedin
spring-boot-starter-social-twitter 支持spring-social-twitter
spring-boot-starter-actuator 添加适用于生产环境的功能,如性能指标和监测等功能
spring-boot-starter-remote-shell 支持远程SSH命令操作
spring-boot-starter-tomcat 使用Spring Boot默认的Tomcat作为应用服务器
spring-boot-starter-jetty 引入了Jetty HTTP引擎(用于替换Tomcat)
spring-boot-starter-undertow 引入了Undertow HTTP引擎(用于替换Tomcat)
二、快速入门
- 快速入门
1、pom.xml
引用了spring-boot-starter-web启动器依赖
2、代码
@EnableAutoConfiguration注解是由Boot提供的,
用于对Spring框架进行自动配置
@RestController和@RequestMapping注解是由SpringMVC提供的,
用于创建Rest服务。
三、安装配置
- 基于Maven环境配置
1、继承Spring Boot根默认配置依赖
2、根据应用需要添加不同类型的启动器依赖
3、配置运行插件 - 基于Gradle环境配置
- 基于Spring Boot CLI环境配置
- 代码包结构规划
建议将应用的主类放在主包外层。
这个主类声明了main()方法,并在类级别上标注
@Configuration、@ConponentScan、@EanbleAutoConfiguration注解。
在Spring Boot 1.2+中可以使用
@SpringBootApplication注解代替上面3个注解。
四、持久层
- 初始化配置
1、在模块pom.xml文件中导入
spring-boot-starter-data-jdbc依赖及访问数据库的JDBC驱动器。
2、在资源根目录resources下创建一个application.properties,配置数据库连接信息:
1)两种配置数据库连接的方式:
通过自定义连接的方式,通过配置spring.datasource.*选项
设定数据源的链接地址、连接驱动器、用户名和密码。
在默认情况下,Boot启动器自动创建tomcat-jdbc连接池。
如果不想采用默认的连接池,则可以通过spring.datasource.type属性
手工指定项目所需的连接池(如DBCP、C3P0)。
通过JNDI方式设置,在生产环境中通常会采用此种方式。
为spring.datasource.jndi-name属性指定一个JNDI连接名称即可。
配置连接池信息
2)初始化数据库脚本
spring.datasource.initialize属性设置启动的时候是否进行初始化;
spring.datasource.platform属性设置当前数据库类型(如MySQL);
spring.datasource.data属性设置DML脚本文件名称,在启动的时候会从类根路径
加载data-${platform}.sql文件执行,其中${platform}为当前数据库类型;
spring.datasource.schema属性设置DDL脚本文件名称,在启动的时候会从
类跟路径加载schema-mysql.sql文件执行。 - DAO
1、@Repository 定义 DAO Bean。
2、@Autowired 注入 JdbcTemplate。
3、jdbcTemplate API 增删改查。
五、业务层
- Service
1、@service 定义 Service Bean。
2、@Autowired 注入 DAO。
3、调用 DAO 方法。
4、@Transactional 加入事务。 - 事务的管控
在Spring Boot中,使用事务非常简单,首先在主类Application上标注
@EanbleTransactionManagement注解
(开启事务支持,相当于XML中的<tx:annotation-driven/>配置方式),
然后在访问Service方法上标注@Transactional注解即可。
通过@EanbleTransactionManagement注解,Boot为应用自动装配了事务支持。
这对用户并不透明,用户如果想自己定义事务管理器,则在Application类中
添加一个即可,使用@Bean注解:
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
如果在实际的项目中需要分布式事务支持,那么,Boot也提供了很好的支持,
它集成了Atomikos和Bitronix分布式事务处理框架,可以根据需要导入相应的启动器
(spring-boot-starter-jta-atomikos或spring-boot-starter-jta-bitronix)。
六、展现层
- 配置pom.xml依赖
为了支持JSP与JSTL,添加了tomcat-embed-jasper及jstl两个模块依赖,
并将模块的打包方式改为WAR。 - 配置 Spring MVC 框架
继承Spring Boot提供的Servlet初始化器SpringBootServletInitializer,
重写SpringBootServletInitializer的configure()方法。 - 处理登录请求
1、POJO控制器类
@Controller定义Controller Bean。
@Autowired注入Service。
调用Service方法。
@RequestMapping指定方法如何映射请求路径。
2、application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
指定视图路径前缀
spring.mvc.view.suffix=.jsp
指定视图文件后缀 - JSP视图页面
1、登录页面
2、欢迎页面
七、运维支持
- 运维支持
1、在pom.xml文件中添加spring-boot-starter-actuator依赖。
2、在application.properties的management.health.*选项中进行配置。
3、启动访问http://localhost:8080/health。
4、健康检测服务
/health 显示应用的健康状态信息
/configprops 显示应用中的配置参数的实际值
/beans 显示应用中包含的Spring Bean的信息
/env 显示从ConfigurableEnvironment得到的环境配置信息
/metrics 显示应用的性能指标
/trace 显示应用相关的跟踪(trace)信息
/dump 生成一个线程dump
/autoconfig 显示Spring Boot自动配置的信息
/mappings 显示Spring MVC应用中通过“@RequestMapping”添加的路径映射
/info 显示应用的基本信息
/shutdown 关闭应用