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、基本步骤 步骤:
- 定义一个配置类(@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以上才行)
