zoukankan      html  css  js  c++  java
  • springboot基础知识学习

    一、springboot中常用的注解:

         原文链接:http://blog.csdn.net/lafengwnagzi/article/details/53034369

         原文链接:http://www.cnblogs.com/m4tech/p/6610301.html

    二、SpringBoot返回JSON

        SpringBoot支持RESTFul风格,在springmvc请求类上加上@RestController(等同于@RequestMapping和@ResponseBody)标志请求方法返回为json

    三、springboot全局异常捕获

    一、单个 controller 范围的异常处理

     package com.xxx.secondboot.web;
    
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.xxx.secondboot.exception.MyExceptionResponse;
    
    import io.swagger.annotations.Api;
    
    @Api("测试controllerAdvice和全局异常处理")
    @RestController
    @RequestMapping("/advice1")
    public class AdviceController {
    
        @RequestMapping(value = "/test1", method = RequestMethod.GET)
        public String test1() {
            throw new RuntimeException("advice1 - exception1");
        }
    
        @RequestMapping(value = "/test2", method = RequestMethod.GET)
        public String test2() {
            throw new RuntimeException("advice1 - exception2");
        }
    
        @ExceptionHandler(RuntimeException.class)
        public MyExceptionResponse exceptionHandler() {
            MyExceptionResponse resp = new MyExceptionResponse();
            resp.setCode(300);
            resp.setMsg("exception-Handler");
            return resp;
        }
    
    }
    

    说明:

    • 在 controller 中加入被 @ExceptionHandler 修饰的类即可(在该注解中指定该方法需要处理的那些异常类)
    • 该异常处理方法只在当前的 controller 中起作用

    二、全部 controller 范围内起作用的异常处理(全局异常处理)

    1、全局异常处理类

    package com.xxx.secondboot.web;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.xxx.secondboot.exception.MyExceptionResponse;
    import com.xxx.secondboot.exception.MyRuntimeException;
    
    //@ControllerAdvice(annotations=RestController.class)
    //@ControllerAdvice(basePackages={"com.xxx","com.ooo"})
    @ControllerAdvice
    public class GlobalExceptionHandler {
        @ExceptionHandler(RuntimeException.class)
        //    @ExceptionHandler(value={RuntimeException.class,MyRuntimeException.class})
        //    @ExceptionHandler//处理所有异常
        @ResponseBody //在返回自定义相应类的情况下必须有,这是@ControllerAdvice注解的规定
        public MyExceptionResponse exceptionHandler(RuntimeException e, HttpServletResponse response) {
            MyExceptionResponse resp = new MyExceptionResponse();
            resp.setCode(300);
            resp.setMsg("exception-Handler");
            //        response.setStatus(600);
            return resp;
        }
    }
    

    说明:

    • @ControllerAdvice 是 controller 的一个辅助类,最常用的就是作为全局异常处理的切面类
    • @ControllerAdvice 可以指定扫描范围
    • @ControllerAdvice 约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换

    2、单个controller异常和全局异常处理类

    package com.xxx.secondboot.web;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import io.swagger.annotations.Api;
    
    @Api("测试controllerAdvice和全局异常处理")
    @RestController
    @RequestMapping("/advice1")
    public class AdviceController {
    
        @RequestMapping(value = "/test1", method = RequestMethod.GET)
        public String test1() {
            throw new RuntimeException("advice1 - exception1");
        }
    
        @RequestMapping(value = "/test2", method = RequestMethod.GET)
        public String test2() {
            throw new RuntimeException("advice1 - exception2");
        }
    
        //    @ExceptionHandler(RuntimeException.class)
        //    public MyExceptionResponse exceptionHandler() {
        //        MyExceptionResponse resp = new MyExceptionResponse();
        //        resp.setCode(300);
        //        resp.setMsg("exception-Handler");
        //        return resp;
        //    }
    
    }
    

    注意:

    • 同一个异常被局部范围异常处理器和全局范围异常处理器同时覆盖,会选择小范围的局部范围处理器
    • 同一个异常被小范围的异常类和大范围的异常处理器同时覆盖,会选择小范围的异常处理器
    • 原文链接:http://bbs.itmayiedu.com/article/1494079310050

    三、springboot修改端口号

    springboot默认是加载srcmain esources目录下的配置文件,配置文件命名为application.properties,为此,修改端口号只需在其配置文件中加上

    server.port=2345(自己设定的端口号)即可

    四、SpringBoot整合定时任务

       spingboot自带了定时任务的框架,我们只需要使用@EnableScheduling注解即可启用定时任务 

    代码片断:

     

     

  • 相关阅读:
    使用tcmalloc编译启动时宕机
    使用tcmalloc编译出现undefined reference to `sem_init'
    使用AddressSanitizer做内存分析(一)——入门篇
    VIM-美化你的标签栏
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
    Entity Framework Code First (一)Conventions
  • 原文地址:https://www.cnblogs.com/kelly-one/p/7388141.html
Copyright © 2011-2022 走看看