lombok应用步骤:
1.装置lombok插件
2.增加lombok依赖
3.在对应的类上应用lombok提供的注解
lombok提供的注解:
@Data此注解形容类时,在编译时会为此类生成get,set,toString,hashCode,equals等办法
@ToString提供重写的toString办法
@Setter提供set办法
@Getter提供get办法
@Slf4j:lombok发现类上有此注解时,会为此类创立一个日志对象,其变量为log
@AllArgsConstructor提供全参构造函数
@NoArgsConstructor提供无参构造函数
lombok原理:
在java源码编译时,基于lombok做了拦挡,底层借助字节码技术为class文件做了加强
热部署实现
增加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
依赖下载当前,可重启reload我的项目,而后当咱们批改了src/main/java目录下的java文件或批改了src/main/resources目录下的配置文件时,默认都会重启你的web服务器,然而批改了测试类或html文件不会主动重启和部署。
健康检查实现
增加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启动我的项目,在浏览器中输出如下地址:(SpringBoot默认关上的监控选项无限)
http://localhost/actuator
如果心愿查看更多actuator选项,能够在spring boot中配置文件
application.properties中增加如下语句:
management.endpoints.web.exposure.include=*
而后,重启服务器,基于拜访http://localhost/actuator地址…
全局异样解决
解决标准:
捕捉异样时与抛出的异样必须齐全匹配,或者捕捉异样是抛出异样的父类类型。
防止间接抛出RuntimeException,更不容许抛出Exception或者Throwable,应应用有业务含意的自定义异样(例如ServiceException)。
捕捉异样后必须进行解决(例如记录日志)。如果不想解决它,须要将异样抛给它的调用者。
最外层的逻辑必须解决异样,将其转化成用户能够了解的内容。
避免出现反复的代码(Don’t Repeat Yourself),即DAY准则。
异样解决形式:
1.try{}catch(){} 毛病代码量大,可重复性差,难以保护
2.在Controller类中定义一个或多个异样解决办法
所有的异样解决办法须要用@ExceptionHandler进行形容,并申明它形容的办法能够解决的异样类型。毛病是只能解决以后Controller类中各个办法呈现的RuntimeException异样或者是其子类类型的异样。
3.在管制逻辑层定义全局异样解决类以及异样解决办法
package com.cy.pj.goods.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@Slf4j
@ControllerAdvice//此注解形容的类为全局异样解决类,在此类中能够定义多个异样解决办法
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public JsonResult doHandleRuntimeException(RuntimeException e) {
log.error("RuntimeException.exception{}",e.getMessage());
return new JsonResult(e.getMessage());
}
@ExceptionHandler(IllegalArgumentException.class)
@ResponseBody
public JsonResult doHandleException(IllegalArgumentException e) {
log.error("IllegalArgumentException.exception{}",e.getMessage());
return new JsonResult(e.getMessage());
}
}
如果Controller类中有异样解决办法,那么必定还是遵循部分优先的准则,由Controller类中的异样解决办法来解决异样。
如果全局异样解决类中存在多个异样解决办法,而其中一个办法的可解决异样的类型是另一个办法的子类类型,那么当出现异常时,则会由这个子类类型的办法来解决
响应规范设计