前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始整SpringBoot-搭建一个企业级项目

从零开始整SpringBoot-搭建一个企业级项目

作者头像
陈珙
发布2020-11-11 16:23:41
8280
发布2020-11-11 16:23:41
举报

创建Springboot项目

在企业里的项目多数是分Modules的,更多是通过物理方式隔离层之间的职责。

首先按照原有新建SpringBoot项目创建,填好相关信息后,选择Java 8其他不用选。

完成后得到上面的结构,把红色选中的相关模块删除后,得到下面的项目结构

新建Module

什么都不需要选,下一步

填好Name后(注意前缀统一,通过-进行分割)点击完成,得出以下结构。

重复上面步骤,把sikiro-system-infrastructure、sikiro-system-repository新增上去,得到下面结构

添加项目依赖

sikiro-om-api->sikiro-om-application->sikiro-om-repository,sikiro-om-infrastructure被三层直接依赖

一共有两种方式添加:

在File->Project Structure->Modules,点击右侧的+,选择Module。

另外一种在pom.xml添加dependencies

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>om</artifactId>
        <groupId>sikiro.system</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>sikiro-system-api</artifactId>

    <dependencies>
        <dependency>
            <groupId>sikiro.system</groupId>
            <artifactId>sikiro-system-application</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>sikiro.system</groupId>
            <artifactId>sikiro-system-infrastructure</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

添加Package

在sikiro-system-api项目添加新package-com.sikiro.system.api,同时添加SikiroSystemApiApplication

代码语言:javascript
复制
@SpringBootApplication()
@ComponentScan(basePackages = {"com.sikiro.system"})
public class SikiroSystemApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(SikiroSystemApiApplication.class, args);
    }
}

然后继续添加HelloController到新的package-com.sikiro.system.api.controller

代码语言:javascript
复制
@RestController
public class HelloController {

    @GetMapping("/api/hi")
    public ApiResult Hi(){
        return ApiResult.Success();
    }
}

在sikiro-system-infrastructure添加下面两个类

代码语言:javascript
复制
package com.sikiro.system.infrastructure.base;

import lombok.AccessLevel;
import lombok.Setter;

/**
 * API统一响应实体
 * @param <T> 业务实体
 */
public class ApiResult<T> {

    @Setter(AccessLevel.PRIVATE)
    public int resultCode;

    @Setter(AccessLevel.PRIVATE)
    public T data;

    @Setter(AccessLevel.PRIVATE)
    public String message;

    @Setter(AccessLevel.PRIVATE)
    public boolean success;

    @Setter(AccessLevel.PRIVATE)
    public boolean failed;

    @Setter(AccessLevel.PRIVATE)
    public boolean error;

    public static <T> ApiResult<T> Success() {
        return Success(ApiResultCode.Succeed.Message(), null, ApiResultCode.Succeed.Value());
    }

    public static <T> ApiResult<T> Success(T data) {
        return Success(ApiResultCode.Succeed.Message(), data, ApiResultCode.Succeed.Value());
    }

    public static <T> ApiResult<T> Success(String msg) {
        return Success(msg, null);
    }

    public static <T> ApiResult<T> Success(String msg, T data, int code) {
        ApiResult<T> result = new ApiResult<>();
        result.setMessage(msg);
        result.setData(data);
        result.setResultCode(code);
        result.setSuccess(true);
        result.setFailed(false);
        result.setError(false);

        return result;
    }

    public static <T> ApiResult<T> Success(String msg, T data) {
        return Success(msg, data, ApiResultCode.Succeed.Value());
    }

    public static <T> ApiResult<T> Failed() {
        return Failed(ApiResultCode.Failed.Message(), null, ApiResultCode.Failed.Value());
    }

    public static <T> ApiResult<T> Failed(String msg) {
        return Failed(msg, null);
    }

    public static <T> ApiResult<T> Failed(String msg, T data) {
        return Failed(msg, data, ApiResultCode.Failed.Value());
    }

    public static <T> ApiResult<T> Failed(String msg, T data, int code) {
        ApiResult<T> result = new ApiResult<>();
        result.setMessage(msg);
        result.setData(data);
        result.setResultCode(code);

        result.setSuccess(false);
        result.setFailed(true);
        result.setError(false);

        return result;
    }

    public static <T> ApiResult<T> Error(String msg) {
        ApiResult<T> result = new ApiResult<>();
        result.setMessage(msg);
        result.setResultCode(ApiResultCode.Error.Value());

        result.setSuccess(false);
        result.setFailed(true);
        result.setError(true);

        return result;
    }
}
代码语言:javascript
复制
package com.sikiro.system.infrastructure.base;

public enum ApiResultCode {

    Succeed(200,"请求成功"),
    Failed(400,"请求失败"),
    Error(500,"服务执行异常");

    private int _index;
    private String _msg;

    ApiResultCode(int index, String msg) {
        _index = index;
        _msg = msg;
    }

    public int Value() {
        return _index;
    }
    public String Message() {
        return _msg;
    }

}

最后编辑启动配置

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Springboot项目
  • 新建Module
  • 添加项目依赖
  • 添加Package
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档