最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot 錯誤處理小結(jié)

 更新時間:2018年03月26日 17:22:39   作者:crazyCodeLove  
在 java web開發(fā)過程中,難免會有一些系統(tǒng)異?;蛉藶楫a(chǎn)生一些異常。在 RESTful springboot 項(xiàng)目中如何優(yōu)雅的處理?下面腳本之家小編給大家?guī)砹藄pringboot 錯誤處理小結(jié),感興趣的朋友一起看看吧

在 java web開發(fā)過程中,難免會有一些系統(tǒng)異常或人為產(chǎn)生一些異常。在 RESTful springboot 項(xiàng)目中如何優(yōu)雅的處理?

分析:在RESTful 風(fēng)格的springboot 項(xiàng)目中,返回的都是 body 對象,所以定義一個結(jié)果基類,其中包含 status,message,data(請求方法的返回結(jié)果),是比較合適的。

如果定義多個異常類進(jìn)行處理,會比較麻煩。比如StudentNotExistsException、StudentExistsException。。。等,并且不能指定錯誤碼,不方便前端根據(jù)錯誤碼進(jìn)行處理。

說明:一般的spring mvc模型處理流程如下

一般controller層 -> Service層 -> Dao層。

1.controller層,接受請求,進(jìn)行分頁,DTO對象封裝操作。

2.service層,執(zhí)行邏輯,控制并發(fā),事務(wù)。

3.Dao層,與數(shù)據(jù)庫交互。

使用一個學(xué)生表的處理進(jìn)行說明:

1、定義常見的錯誤枚舉 StudentExceptionEnum

public enum StudentExceptionEnum {
  STUDENT_NOT_EXIST(1004,"學(xué)生不存在,請確認(rèn)后再查"),
  STUDENT_EXIST(1005,"學(xué)生已存在");
  private Integer status;
  private String comment;
  StudentExceptionEnum(Integer status, String comment) {
    this.status = status;
    this.comment = comment;
  }
  public Integer getStatus() {
    return status;
  }
  public void setStatus(Integer status) {
    this.status = status;
  }
  public String getComment() {
    return comment;
  }
  public void setComment(String comment) {
    this.comment = comment;
  }
}

2 定義一個基本的處理結(jié)果類 RequestResult

@Data
public class RequestResult {
  private String message;
  private Integer status;
  private Object data;
  public RequestResult(String message, Integer status, Object data) {
    this.message = message;
    this.status = status;
    this.data = data;
  }
  public RequestResult(String message, Integer status) {
    this.message = message;
    this.status = status;
  }
  public RequestResult(String message, StudentExceptionEnum requestExceptionEnum) {
    this.message = message;
    this.status = requestExceptionEnum.getStatus();
  }
  public RequestResult() {
    status = 200;
    message = "ok";
  }
  public static RequestResult OK(Object data) {
    RequestResult result = new RequestResult();
    result.setData(data);
    return result;
  }
  public static RequestResult EXCEPTION(String message, Integer status) {
    return new RequestResult(message, status);
  }
  public static RequestResult EXCEPTION(String message, StudentExceptionEnum requestExceptionEnum) {
    return new RequestResult(message, requestExceptionEnum);
  }
}

3 實(shí)體類 Student

@Data
public class Student implements Serializable{
  private String id;
  private String nickname;
  private String name;
  private int age;
  private String sex;
  private String address;
  @Override
  public String toString() {
    return ToStringBuilder.reflectionToString(this);
  }
}

4 處理請求,添加學(xué)生,nickname 必填項(xiàng)。此處只顯示 Service 片段代碼

@Override
  public RequestResult addStudent(Student student) {
    if (studentDao.queryIdByNickname(student.getNickname()) == null) {
      studentDao.addStudent(student);
      System.out.println("添加成功");
      student = studentDao.queryByNickname(student.getNickname());
      return RequestResult.OK(student);
    } else {
      return RequestResult.EXCEPTION("用戶" + student.getNickname() + "已存在", StudentExceptionEnum.STUDENT_EXIST);
    }
  }

5 此時,已經(jīng)完成了基本的處理情況。下面就進(jìn)行基本的測試了

5.1 添加一個新同學(xué)信息

5.2 再次添加讓其出現(xiàn)異常測試

二、到此基本已大功告成,但是,對于基本的運(yùn)行時異常沒有處理,直接返回給前端會很不友好。所以要定義一個全局的 RuntimeException 異常處理類。

此處需要使用的關(guān)鍵標(biāo)注: @ExceptionHandler

用法有兩種 1)在處理請求的 Controller 中添加 @ExceptionHandler,此時該方法只會處理該 Controller 拋出的異常。

2)將其用在全局的異常處理類中,全局異常處理類需要使用  @RestControllerAdvice 或 @ControllerAdvice 標(biāo)記

我們需要處理全局的 RuntimeException,所以我們使用第二種方法。當(dāng)然,這樣處理是為了客戶友好型,我們還是要處理這種錯誤,怎么辦?就需要將錯誤的信息記錄下來,方便以后分析處理。此處使用 logger 進(jìn)行記錄。代碼如下

@RestControllerAdvice
public class BaseExceptionHandler {
  private static Logger logger = LoggerFactory.getLogger(BaseExceptionHandler.class);
  @ExceptionHandler(value = RuntimeException.class)
  public RequestResult exceptionHandler(HttpServletRequest request,Exception e) {
    logError(request,e);
    return RequestResult.EXCEPTION("內(nèi)部處理異常,工程師正在抓緊搶修,請稍后再來...",500);
  }
  public static void logError(HttpServletRequest request, Exception e) {
    logger.error("請求地址:" + request.getRequestURL());
    logger.error("請求方法:" + request.getMethod());
    logger.error("請求IP:" + getRemoteIp(request));
    logger.error("錯誤詳情:");
    StackTraceElement[] error = e.getStackTrace();
    for (StackTraceElement stackTraceElement : error) {
      logger.error(stackTraceElement.toString());
    }
  }
  public static String getRemoteIp(HttpServletRequest request) {
    String ip = request.getHeader("X-Forwarded-For");
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
      }
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
      }
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_CLIENT_IP");
      }
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
      }
      if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
      }
    } else if (ip.length() > 15) {
      String[] ips = ip.split(",");
      for (int index = 0; index < ips.length; index++) {
        String strIp = (String) ips[index];
        if (!("unknown".equalsIgnoreCase(strIp))) {
          ip = strIp;
          break;
        }
      }
    }
    return ip;
  }
}

進(jìn)行測試看是否生效:

修改添加學(xué)生信息代碼如下:

public RequestResult addStudent(Student student) {
    int a = 1/0;
    
    if (studentDao.queryIdByNickname(student.getNickname()) == null) {
      studentDao.addStudent(student);
      System.out.println("添加成功");
      student = studentDao.queryByNickname(student.getNickname());
      return RequestResult.OK(student);
    } else {
      return RequestResult.EXCEPTION("用戶'" + student.getNickname() + "'已存在", StudentExceptionEnum.STUDENT_EXIST);
    }
  }

進(jìn)行測試

后臺打印錯誤信息

2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : 請求地址:http://localhost:8080/demo1/student
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : 請求方法:POST
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : 請求IP:0:0:0:0:0:0:0:1
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : 錯誤詳情:
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : com.huitong.demo.service.StudentService.addStudent(StudentService.java:71)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : com.huitong.demo.controller.StudentController.addStudent(StudentController.java:38)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : java.lang.reflect.Method.invoke(Method.java:498)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776)
2018-03-26 17:01:19.125 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
2018-03-26 17:01:19.129 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2018-03-26 17:01:19.130 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2018-03-26 17:01:19.131 ERROR 9136 --- [nio-8080-exec-2] c.h.d.controller.BaseExceptionHandler  : java.lang.Thread.run(Thread.java:745)
2018-03-26 17:01:19.133 WARN 9136 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: java.lang.ArithmeticException: / by zero

總結(jié)

以上所述是小編給大家介紹的springboot 錯誤處理小結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java1.5中訪問環(huán)境變量

    java1.5中訪問環(huán)境變量

    這篇文章主要介紹了如何在java1.5中訪問環(huán)境變量,使用System.getenv()可以訪問環(huán)境變量
    2014-01-01
  • 重試框架Guava-Retry和spring-Retry的使用示例

    重試框架Guava-Retry和spring-Retry的使用示例

    spring-retry 和 guava-retry 工具都是線程安全的重試,能夠支持并發(fā)業(yè)務(wù)場景的重試邏輯正確性,本文主要介紹了重試框架Guava-Retry和spring-Retry的使用示例,感興趣的可以一下
    2023-09-09
  • SpringAOP實(shí)現(xiàn)日志收集管理功能(步驟詳解)

    SpringAOP實(shí)現(xiàn)日志收集管理功能(步驟詳解)

    這篇文章主要介紹了SpringAOP實(shí)現(xiàn)日志收集管理功能,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • springboot項(xiàng)目啟動的時候參數(shù)無效的解決

    springboot項(xiàng)目啟動的時候參數(shù)無效的解決

    這篇文章主要介紹了springboot項(xiàng)目啟動的時候參數(shù)無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯誤解決方法

    java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯誤解決方法

    這篇文章主要介紹了java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯誤解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java如何通過反射將map轉(zhuǎn)換為實(shí)體對象

    Java如何通過反射將map轉(zhuǎn)換為實(shí)體對象

    在Java開發(fā)中,常需要將XML配置數(shù)據(jù)轉(zhuǎn)為Map,并最終映射到實(shí)體對象上,通過單例模式管理XML轉(zhuǎn)換后的Map,并利用Java反射機(jī)制,通過屬性名稱匹配將Map的值賦給實(shí)體對象的對應(yīng)屬性,這種方法忽略了數(shù)據(jù)類型轉(zhuǎn)換,適用于數(shù)據(jù)類型一致的簡單場景,需要類型轉(zhuǎn)換時
    2024-09-09
  • Java 解析Markdown文檔格式的兩種方式

    Java 解析Markdown文檔格式的兩種方式

    CommonMark和Flexmark是兩種用于解析Markdown文檔的Java庫,CommonMark提供了一種簡潔和一致的Markdown格式語法規(guī)范,但不支持目錄解析,而Flexmark是一個基于CommonMark的擴(kuò)展庫,不僅遵循了CommonMark規(guī)范,還提供了更多靈活的API和擴(kuò)展功能
    2024-10-10
  • Java實(shí)現(xiàn)的計算最大下標(biāo)距離算法示例

    Java實(shí)現(xiàn)的計算最大下標(biāo)距離算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的計算最大下標(biāo)距離算法,涉及java針對數(shù)組的遍歷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Redis框架Jedis及Redisson對比解析

    Redis框架Jedis及Redisson對比解析

    這篇文章主要介紹了Redis框架Jedis及Redisson對比解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • spring boot設(shè)置過濾器、監(jiān)聽器及攔截器的方法

    spring boot設(shè)置過濾器、監(jiān)聽器及攔截器的方法

    這篇文章主要給大家介紹了關(guān)于spring boot設(shè)置過濾器、監(jiān)聽器及攔截器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

密云县| 砀山县| 芷江| 蓝田县| 定兴县| 上犹县| 乐业县| 神木县| 滕州市| 左云县| 阜城县| 永德县| 富阳市| 苗栗县| 威海市| 任丘市| 上蔡县| 启东市| 静安区| 灵山县| 长沙县| 乡城县| 财经| 淅川县| 大连市| 金溪县| 濮阳市| 高阳县| 军事| 徐州市| 龙里县| 苍溪县| 怀来县| 克拉玛依市| 德令哈市| 额尔古纳市| 宁德市| 监利县| 鹿邑县| 长子县| 眉山市|