一、热部署
使用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、基本步骤
步骤:
-
定义一个配置类(@Configuration),实现WebMvcConfigure接口
注:这个接口中的方法都添加了Jdk1.8中的default方法修饰,不强制实现所有的方法(Jdk1.8新特性),只能在SpringBoot2.0使用
-
根据需要实现相应方法
三、全局异常处理
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组件
步骤:
- 定义一个配置类
- 自定义一个方法,用来注册组件
五、使用外部的Servlet容器
1、优缺点
使用内置的Servlet容器:将应用打成可执行的jar包,直接运行
- 优点:简单、方便
- 缺点:不支持JSP,可定制性差
使用外部Servlet容器:将应用打成war包,然后部署到外部的Tomcat
- 优点:支持JSP、可定制性强
2、操作步骤
步骤:
-
创建一个Maven的war工程
有如下三个变化
- 打包方式变为war
- 将内置的Tomcat的scope配置为provided
- 定义了一个SpringBootServletInitializer的子类
-
创建Web目录
Project Structure ——> Modules ——> Depioyment Descriptors ——>+
-
配置前缀和后缀
<!-- 配置文件路径的前缀 --> spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
-
配置Tomcat(Tomcat 8.5以上才行)