Spring Boot 项目如何搭建(四)

版权声明:本文为博主原创文章,未经博主允许不得转载: https://blog.csdn.net/sinat_33381791/article/details/83155538

简介

Spring Boot项目的搭建,常用实例分析

在项目开发中我们一般情况下提供给APP或者网站应用的接口一般的请求方式是***GET、POST、PUT***等等,那么接下来我们将通过一个简单的案例来进行分析,带领大家进入Spring Boot项目的开发,创建(层级分明,思路请析)、编码,主要是 搭建项目 等,如何搭建一个Spring Boot开发项目呢?。

项目结构创建

项目目录如下,包层级分明

一般如下图所示:

在***src***目录下的***main/java***里面的创建的包级目录,进行分析如下:

/----------------------------------
|-- controller:主要是控制器,通过注解@RestController,Spring4之后新加的注解,原来返回json数据格式,通@RequestMapping,设置访问URI。
|-- enums: 主要是封装返回码的提示。
|-- exception: 主要是封装异常打印输出。
|-- handle: 捕捉异常处理
|-- model:实体类
|-- repository:Jpa使用封装,假如使用MyBatis的会进行其封装,后期文章会说明到MyBatis
|-- service:逻辑处理封装,返回数据给Controller类
|-- utils:封装一些工具类
|-- 其他:在开发中还有一些需要创建其他包,根据自己需求。
\------------------------------------

主要代码分析

这里主要是写一个简单的事例进行参考包层级之间的调用。

代码注解如下:

1.EirunyeController.class,这里进行一些常用的请求GETPOSTPUT等案例测试,代码没用贴全,请查看EirunyeController.class

@RestController
@RequestMapping("/Eirunye") //设置请求的父级标签URI
public class EirunyeController {

    @Autowired //注:Autowired是按类型进行装配,可获取它所装配类的属性
    EirunyeService eirunyeService;
    /**
     * 访问返回数据
     *
     * @return JSON EiBean
     * @throws Exception 出现异常处理
     */
    @GetMapping(value = "/get/bean")//url===>http:localhost:8091/Eirunye/get/bean
    public Result<EiBean> getEiBeanData() throws Exception {

        return eirunyeService.getEiBeanData();
    }
/**
     *  POST请求
     * @param eiBean
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/save/bean") //url===>http:localhost:8091/Eirunye/save/bean
    public Result<EiBean> saveEiBeanData(@Valid EiBean eiBean) throws Exception {

        return eirunyeService.saveEiBeanData(eiBean);
    }
 /**
     *  PUT请求
     * @param eiBean
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/put/eiBean", method = RequestMethod.PUT)//url===>http:localhost:8091/Eirunye/put/eiBean
    public Result<EiBean> putEiBeanData(@Valid EiBean eiBean) throws Exception{
        return eirunyeService.putEiBeanData(eiBean);
    }
/**
     * DELETE 请求案例
     * @param id id
     * @return JSON EiBean
     * @throws Exception 异常处理
     */
    @DeleteMapping(value = "/delete/Bean/{id}")//url===>http:localhost:8091/Eirunye/delete/Bean/1
    public Result<EiBean> deleteEiBeanDataById(@PathVariable("id")Integer id) throws Exception{
        return eirunyeService.deleteEiBeanDataById(id);
    }
}

2.EirunyeService.class

@Service 用于标注业务层组件:将当前类注册为Spring的Bean

@Service // 用于标注业务层组件:将当前类注册为Spring的Bean
public class EirunyeService {

    /**
     * @return Result<EiBean>
     * @throws EirunyeException 异常处理
     */
    public Result<EiBean> getEiBeanData() throws EirunyeException{
        EiBean eiBean = new EiBean();
        eiBean.setName("Eirunye");
        eiBean.setAge(19);
        eiBean.setHobby("Java Spring Boot");
        return ResultUtil.globalInfo(ResultEnum.SUCCESS,eiBean);
    }
}

EiBean.class

public class EiBean {

    private String name;

    private int age;

    private String hobby;
//get/set...
}

返回JSON数据封装

ResultUtil.class表示返回封装

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultUtil 返回结果封装
 */
public class ResultUtil {

    public static Result globalInfo(ResultEnum resultEnum, Object object) {
        Result result = new Result();
        result.setCode(resultEnum.getCode());
        result.setMsg(resultEnum.getMsg());
        result.setData(object);
        return result;
    }
    public static  Result error(Integer code,String msg){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}

ResultEnum枚举,进行封装符合字符提示

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultEnum
 */
public enum ResultEnum {

    UNKNOWN_ERROR(-1, "UNKNOW ERROR"),//返回失败
    SUCCESS(0, "SUCEESSS"), ///返回成功
    ///这里大家定义自己的返回系列
    ;
    private Integer code; //返回码 0表示成功,1表示失败,-1未知错误
    private String msg;

    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    public Integer getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }
}

添加异常处理,这里只是简单的提示,后期会讲解到Spring Boot如何优雅的封装异常。
EirunyeException.class这里表示封装的一次处理。

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultEnum
 */
public class EirunyeException extends RuntimeException {

    private Integer code;
    public EirunyeException(ResultEnum resultEnum) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
}

这里主要讲解的是常用的注解方法。需要更多的情况官方文档。

注解 解释说明
@RestController 表示的是:@ResponseBody@Controller,作用于类,返回默认为JSON数据
@Controller 表示视图可以解析jsp、xml等文档,需要在方法中添加@ResponseBody,返回JSON
@ResponseBody 作用于方法中,如果类中有@RestController,就不需要添加@ResponseBody
@RequestMapping("/Eirunye") 作用于类中是表示设置请求的父级标签URI,每个URI必须带父级标签如:http://localhost:8080/Eirunye/xxxx
作用于方法是表示默认为GET请求
@RequestMapping(value = "/put/eiBean",method = RequestMethod.PUT) 表示PUT请求,如图RequestMethod.png 常用的请求方法
@GetMapping(value = "/bean") 表示GET请求
@GetMapping(value = "/get/hello/{id}")表示参数id,看上面代码引用@PathVariable("id")
@PathVariable("xx") 表示在方法的参数中引用,获取URL中{xx}中的数据,xx表示的字段相同,看以上代码id
@RequestParam 表示请求参数,看以上代码(@RequestParam("name") String name, @RequestParam("age") int age)
@PostMapping(value = "/save/bean") 表示POST请求,@RequestMapping(value = "/save/bean", method = RequestMethod.POST)简写,参数(@Valid EiBean eiBean)或者params形式等
@DeleteMapping(value = "delete/Bean/{id}") 表示DELETE请求,@RequestMapping(value = "delete/Bean/{id}", method = RequestMethod.DELETE)
@Service 用于标注业务层组件:将当前类注册为Spring的Bean,操作数据库一般在这里进行
  • 注:在后期文章遇到新的注解会说明到。

测试

在接下来会有一篇博文会详细讲解在开发中我们如何进行测试(#),这里只进行一些简单测试

在这里我们只需要进行一下访问结果,如下:

  • Postman请求如下:
    Postman请求有全部满足要求的请求,切换请求方法即可。
  • IDEA请求如下:

下载

总结

1.学习本篇,我们知道如何搭建一个好的项目工程,常用的功能架构
2.我们在搭建项目的时候要尽可能考虑到我们需要的处理逻辑,选型,然后进行封装,这只是一个简单的项目搭建,在正常情况下,假如添加MyBatis或者其他数据库操作时,最好分成处理,这里我们阅读代码非常方便,异常处理非常重要,我们能快速定位错误位置等等。
3.打家可以通过该案例来进行搭建项目,符合自己的代码编写项目操作。
4.本案例代码大家完全可以引用到自己的项目中进行封装开发。

推荐

猜你喜欢

转载自blog.csdn.net/sinat_33381791/article/details/83155538