SpringBoot学习总结——SpringBoot进阶

一、热部署

使用SpringBoot提供的devtools实现热部署

原理:实现监控classpath下文件的变化,如果发生变化则自动重启服务器

配置:添加devtools依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <!-- 该依赖不传递 -->
   <optional>true</optional>
</dependency>
<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
    <!-- 如果没有该配置,devtools不会生效 -->
   	<fork>true</fork>
   </configuration>
</plugin>

二、扩展默认的SpringMVC功能

1、简介 以前在SpringMVC中通过如下代码实现视图跳转

<mvc:view-controller path="/showLogin" view-name="login" />
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/hello"/>
		<bean class="拦截器位置"/>
	</mvc:interceptor>
</mvc:interceptors>

SpringBoot自动配置默认没有提供以上功能配置,需要自己扩展,使用WebMvcConfigure接口

2、基本步骤 步骤:

  1. 定义一个配置类(@Configuration),实现WebMvcConfigure接口 注:这个接口中的方法都添加了Jdk1.8中的default方法修饰,不强制实现所有的方法(Jdk1.8新特性),只能在SpringBoot2.0使用
  2. 根据需要实现相应方法

三、全局异常处理

1、简介 当程序出现异常时进行全局处理,SpringBoot默认的异常提示:Whitelabel Error Page

两种方式:

    定义错误码页面 定义异常通知

2、定义错误码页面 创建 错误状态码.html 页面,放在templates/error目录中,当发生错误时会自动到该目录下查找对应的错误页面

可以创建如 4xx.html 或 5xx.html 页面,用来匹配所有该类型的错误(会先进行精确匹配)

还可以在页面上获取错误信息 3、定义异常通知

四、关于Servlet容器

1、简介 SpringBoot中默认内置了Servlet容器:Tomc

问题:SpringBoot默认是以jar包的方式启动内置的Servlet容器,没有web.xml文件,如何注册Servlet三大组件:Servlet、Filter、Listener?

解决:通过自定义Servlet配置,使用ServletRegistrationBean、FilterRegistrationBean、ListenerRegistrationBean

2、注册Servl组件 步骤:

  1. 定义一个配置类
  2. 自定义一个方法,用来注册组件

五、使用外部的Servlet容器

1、优缺点 使用内置的Servlet容器:将应用打成可执行的jar包,直接运行

    优点:简单、方便 缺点:不支持JSP,可定制性差

使用外部Servlet容器:将应用打成war包,然后部署到外部的Tomcat

    优点:支持JSP、可定制性强

2、操作步骤 步骤:

  1. 创建一个Maven的war工程 有如下三个变化 - 打包方式变为war - 将内置的Tomcat的scope配置为provided - 定义了一个SpringBootServletInitializer的子类
  2. 创建Web目录 Project Structure ——> Modules ——> Depioyment Descriptors ——>+
  3. 配置前缀和后缀 <!-- 配置文件路径的前缀 --> spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
  4. 配置Tomcat(Tomcat 8.5以上才行)
经验分享 程序员 微信小程序 职场和发展