Spring读书学习笔记(二)——Spring boot

来源:互联网 发布:露出是什么体验知乎 编辑:程序博客网 时间:2024/05/17 09:29

2.1 概述

2.1.1 特点

内嵌Tomcat和Jetty容器,不需要部署WAR文件到Web容器及可独立运行应用。

提供许多基于Maven的pom配置模板来简化工程配置。

提供实现自动化配置的基础设施。

提供可以直接在生产环境中使用的功能。

开箱即用,没有代码生成,也无须XML配置文件,支持修改默认值来满足特定需求。

2.1.2 启动器

Spring boot是由一系列启动器组成,开发人员根据项目需要,选择并组合相应的启动器,及可以快速搭建一个适合项目需要的基础运行框架。例如,要开发一个基于Maven的Web项目,通常在项目的pom.xml文件中引入spring-mvc,spring-webmvc,jackson,tomcat等依赖模块。如果使用springboot启动器,则只需引入一个spring-boot-starter-web即可。如下图所示




2.2 持久层

Spring框架提供了几种可选的操作数据库的方式,可以直接使用Spring内置轻量级JdbcTemplate,也可以使用第三方持久化框架Mybatis。Spring boot为这两种操作数据库的方式分别提供了相应的启动器spring-boot-starter-jdbc和spring- boot-starter-jpa。只需在pom.xml中添加对应依赖即可。

2.2.1 初始化配置

要使用Spring Boot提供的JDBC启动器,首先要在模块pom.xml文件中导入Spring-boot-starter-data-jdbc依赖及访问数据库的JDBC驱动。




导入依赖包之后,为了让Spring boot能够自动装配数据源的连接,需要在资源resources根目录下创建一个application.properties,配置数据库的连接信息。

在Spring Boot中,可以通过两种方式创建数据库连接,一种是通过自定义的连接方式,通过配置spring.datasource.*设定数据源的链接地址、连接驱动器、用户名和密码。在默认情况下,Boot启动器自动创建tomcat-jdbc连接池。如果不想采用默认的连接池,则可以通过,spring.datasource.type属性手工指定项目所需的连接池。(如DPCP,C3P0)。

另外一种是通过JNDI方式设置,在生产环境中通常会使用此方式。

Boot中提供了灵活的数据库初始化方式,可以设定DDL脚本,也可以设定DML脚本。


2.3 业务层

在编写业务层代码时有两个重要的步骤:一是编写正确的业务逻辑;二是对业务事务的管控。在Spring Boot中,使用事务非常简单,首先在主类application上标注@EnableTransactionManagement注解,然后在访问Service方法上标注@Transcational注解即可。如果将@Transcational注解标注在Service类级别上,那么当前Service类的所有方法都将被事务增强,建议不要在类级别上标注此注解。

通过@EnableTransactionManagement注解,Boot为应用自动装配了事务支持。这对用户并不透明,用户如果想自己定义事务管理器,则在application类中添加一个即可。


2.4 展现层

此层基于Spring MVC实现即可。

2.4.1 处理登录请求

先写一个LoginController,它负责处理登录请求,完成登录业务,并根据登录成功与否转向欢迎页面或失败页面。

创建一个文件夹用于存放JSP文件。为了统一规范,在src/main/webapp/WEB-INF目录下创建jsp文件夹。

在默认情况下,Spring Boot对/static, /public, /resource, 或/META-INF/resources目录下的静态文件提供支持,所以我们可以将目录中的静态文件(JS,CSS,Image等)放到这几个目录中。

规划好视图目录后,最后一步就是在application.properties中配置创建好的视图路径。


2.5运维支持

与开发和测试环境不同的是,当应用部署到生产环境时,需要各种运维相关的功能的支持,如监控应用的各种性能的指标、运行信息和应用状态等。

基于Spring Boot应用,添加监控功能非常简单,只需在应用的pom.xml文件中添加spring-boot-starter-actuator依赖即可。

Spring Boot默认提供了对应用本身、关系数据库连接、MongoDB、Redis、Solr、ElasticSearch、JMS和Rabbit MQ等服务的健康状态的检测功能。这些服务都可以在application.properties和management.health.*中进行配置。