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类中的异样解决办法来解决异样。

如果全局异样解决类中存在多个异样解决办法,而其中一个办法的可解决异样的类型是另一个办法的子类类型,那么当出现异常时,则会由这个子类类型的办法来解决


响应规范设计