Spring boot(二)

来源:互联网 发布:快速背单词软件 编辑:程序博客网 时间:2024/06/06 17:19

controller:

package com.imooc.girl.controller;import com.imooc.girl.entity.Result;import com.imooc.girl.repository.GirlRepository;import com.imooc.girl.entity.Girl;import com.imooc.girl.service.GirlService;import com.imooc.girl.utils.ResultUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.*;import javax.validation.Valid;import javax.validation.constraints.Min;import java.util.List;@RestControllerpublic class GirlController {    @Autowired    private GirlRepository girlRepository;    @Autowired    private GirlService girlService;    @RequestMapping("/findAll" )    public List<Girl> findAll(){        System.out.println("来了吧 。。。。");    return girlRepository.findAll();    }    @PostMapping("/add")    public Result<Girl> add(@Valid Girl girl, BindingResult bindingResult){        if(bindingResult.hasErrors()){           return ResultUtil.error(0,bindingResult.getFieldError().getDefaultMessage());        }        return ResultUtil.success(girlRepository.save(girl));    }    @GetMapping("/query/{id}")    public void query(@PathVariable("id") Integer id)throws Exception{         girlService.getAge(id);    }    @PutMapping("/update/{id}/{cupSize}/{age}")    public Girl update(@PathVariable("id") Integer id,@PathVariable("cupSize")String cupSize,                       @PathVariable("age")Integer age){       Girl girl = new Girl();       girl.setId(id);       girl.setAge(age);       girl.setCupSize(cupSize);        return girlRepository.save(girl);    }    @DeleteMapping("/update/{id}")    public void delete(@PathVariable("id") Integer id){        girlRepository.delete(id);    }}



Service:

package com.imooc.girl.service;import com.imooc.girl.entity.Girl;import com.imooc.girl.exception.MyException;import com.imooc.girl.repository.GirlRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class GirlService {    @Autowired    private GirlRepository girlRepository;    public void getAge(Integer id) throws  Exception{        Girl girl=girlRepository.findOne(id);        Integer age=girl.getAge();        if(age<10){           throw new MyException(101,"你在上小学吧");        }else if(age >10&&age<20) {           throw new MyException(102,"你可能在上初中吧 ");        }    }}

Repository:

package com.imooc.girl.repository;import com.imooc.girl.entity.Girl;import org.springframework.data.jpa.repository.JpaRepository;public interface GirlRepository extends JpaRepository <Girl,Integer>{}


entity:

package com.imooc.girl.entity;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;@Entitypublic class Girl {    @Id    @GeneratedValue    private Integer id;    private String cupSize;    @Min(value=18,message = "未成年少女禁止入内")    private Integer age;    @NotNull(message = "金额不能为空")    private String money;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getCupSize() {        return cupSize;    }    public void setCupSize(String cupSize) {        this.cupSize = cupSize;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String getMoney() {        return money;    }    public void setMoney(String money) {        this.money = money;    }    //    public Girl() {//    }    @Override    public String toString() {        return "Girl{" +                "id=" + id +                ", cupSize='" + cupSize + '\'' +                ", age=" + age +                '}';    }}


返回数据处理的entity

package com.imooc.girl.entity;/** * http请求返回的 最外层 对象 */public class Result<T> {    private Integer code;    private  String msg;    private T data;    public Integer getCode() {        return code;    }    public void setCode(Integer code) {        this.code = code;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    public T getData() {        return data;    }    public void setData(T data) {        this.data = data;    }}

AOP处理类

package com.imooc.girl.adpect;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.HttpRequest;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;@Aspect@Componentpublic class HttpAspect {    private final static Logger logger= LoggerFactory.getLogger(HttpAspect.class);    @Pointcut("execution(public * com.imooc.girl.controller.GirlController.*(..) )")    public void log(){    }    @Before("log()")    public void log1(JoinPoint joinPoint){        ServletRequestAttributes attributes=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();        HttpServletRequest request=attributes.getRequest();        //url        logger.info("url={}",request.getRequestURL());        //method        logger.info("url={}",request.getMethod());        //ip        logger.info("url={}",request.getRemoteAddr());        //类方法        logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());        //类的参数        logger.info("args={}",joinPoint.getArgs());    }    @After("log()")    public void log2(){        logger.info("2222");    }    @AfterReturning(returning = "object",pointcut = "log()")    public void afterReturn(Object object){        logger.info("response={}",object.toString());    }}

自定义异常处理:
package com.imooc.girl.exception;import com.imooc.girl.entity.Result;import com.imooc.girl.utils.ResultUtil;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvicepublic class ExceptionHandle {    @ExceptionHandler(value=Exception.class)    @ResponseBody    public Result  handle(Exception e){         if(e instanceof MyException){            MyException my= (MyException)e;            return  ResultUtil.error(my.getCode(),my.getMessage());         }else{             return ResultUtil.error(100,e.getMessage());         }    }}


package com.imooc.girl.exception;public class MyException extends  RuntimeException {    private Integer code;    public MyException(Integer code,String message) {       super(message);        this.code = code;    }    public Integer getCode() {        return code;    }    public void setCode(Integer code) {        this.code = code;    }}

utils类

package com.imooc.girl.utils;import com.imooc.girl.entity.Result;public class ResultUtil {    public static Result success(Object object){        Result result=new Result();        result.setCode(1);        result.setMsg("成功 ");        result.setData(object);        return result;    }    public static Result success(){        return success(null);    }    public static Result error(Integer code,String msg){        Result result=new Result();        result.setCode(code);        result.setMsg(msg);        return result;    }}

application.yml

spring: profiles:   active: dev datasource:   driver-class-name: com.mysql.jdbc.Driver   url: jdbc:mysql://192.168.1.178:3306/girl   password: root   username: root jpa:    hibernate:      ddl-auto: update    show-sql: true




枚举改善自定义异常:

添加枚举类

package com.imooc.girl.enums;public enum ResultEnum {    UNKNOW_ERROR(-1,"未知错误"),    SUCCESS(0,"成功"),    PRIMARY_SCOOL(100,"你可能上的是小学"),    MIDDLE_SCOOL(200,"你可能上的是中学"),    ;    private Integer code;    private String msg;    ResultEnum(Integer code, String msg) {        this.code = code;        this.msg = msg;    }    public Integer getCode() {        return code;    }    public String getMsg() {        return msg;    }}

Service调整:

package com.imooc.girl.service;import com.imooc.girl.entity.Girl;import com.imooc.girl.enums.ResultEnum;import com.imooc.girl.exception.MyException;import com.imooc.girl.repository.GirlRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class GirlService {    @Autowired    private GirlRepository girlRepository;    public void getAge(Integer id) throws  Exception{        Girl girl=girlRepository.findOne(id);        Integer age=girl.getAge();        if(age<10){           throw new MyException(ResultEnum.PRIMARY_SCOOL);        }else if(age >10&&age<20) {           throw new MyException(ResultEnum.MIDDLE_SCOOL);        }    }}

自定义异常类改善

package com.imooc.girl.exception;import com.imooc.girl.enums.ResultEnum;public class MyException extends  RuntimeException {    private Integer code;    public MyException(ResultEnum resultEnum) {       super(resultEnum.getMsg());        this.code = resultEnum.getCode();    }    public Integer getCode() {        return code;    }    public void setCode(Integer code) {        this.code = code;    }}





原创粉丝点击