创建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

<?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

@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

@RestController
public class HelloController {

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

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

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;
}
}
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;
} }

最后编辑启动配置

从零开始整SpringBoot-搭建一个企业级项目的更多相关文章

  1. 一步步从零开始用 webpack 搭建一个大型项目

    开篇 很多人都或多或少使用过 webpack,但是很少有人能够系统的学习 webpack 配置,遇到错误的时候就会一脸懵,不知道从哪查起?性能优化时也不知道能做什么,网上的优化教程是不是符合自己的项目 ...

  2. 从零开始使用vue-cli搭建一个vue项目及注意事项

    一.安装node.js 1.根据电脑的自行下载node.js安装包http://nodejs.cn 2.点击安装,按照正常的的一路点击下去 3.验证安装是否成功,按键win+r,输入cmd打开命令行工 ...

  3. vue-用Vue-cli从零开始搭建一个Vue项目

    Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用:数据驱动是前端的未来发展方向,释放了对 ...

  4. 从零开始搭建一个react项目

    Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...

  5. Vue.js学习笔记--菜鸟搭建一个企业级vue的项目

    vue.js新手搭建一个企业项目,从0开始 前置条件: node.npm请先安装配置好 下面开始: npm 下载vue-cli脚手架工具  确认安装成功看到版本号: 初始化项目,选用webpack(p ...

  6. 从零开始用 Flask 搭建一个网站(一)

    前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...

  7. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  8. 从零开始用 Flask 搭建一个网站(四)

    前言 从零开始用 Flask 搭建一个网站(三) 介绍了网页前端与后端.前端与前端之间数据的交流.本节主要介绍一下如何应用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以轻 ...

  9. springboot搭建一个简单的websocket的实时推送应用

    说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...

  10. 从零开始用 Flask 搭建一个网站(三)

    从零开始用 Flask 搭建一个网站(二) 介绍了有关于数据库的运用,接下来我们在完善一下数据在前端以及前端到后端之间的交互.本节涉及到前端,因此也会讲解一下 jinja2 模板.jQuery.aja ...

随机推荐

  1. 【HALF】CSP-S2 2022 游记 - Dawn Eve?

    相册放在 NOIP2022 游记 了 Day -2 周三.折腾了好几天,考场从深圳换到广州最后换到东莞.疫情爆炸... 只是希望自己最后两场比赛不会受到影响. 下午是高二体锻课,结果我们得去做核酸.四 ...

  2. Three.js 进阶之旅:全景漫游-高阶版在线看房 🏡

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 摘要 专栏上篇文章<Three.js 进阶之旅:全景漫游-初阶移动相机版& ...

  3. Mysql关联删除CSV中的相关数据

    问题描述:提供一个csv文件,记录的是一些不同数据库的不同表中的共同字段account_id数据,需要在A库的account表中做关联删除 解决思路:csv文件中储存的都是account_id,六位纯 ...

  4. yolov5训练自己的数据集

    1.安装cuda 可以先看看自己的 显卡信息,支持哪个cuda版本 cuda下载地址:https://developer.nvidia.com/cuda-toolkit-archive 我的RTX30 ...

  5. 如何建设一个用于编译 iOS App 的 macOS 云服务器集群?

    作者:京东零售 叶萌 现代软件开发一般会借助 CI/CD 来提升代码质量.加快发版速度.自动化重复的事情,iOS App 只能在 mac 机器上编译,CI/CD 工具因此需要有一个 macOS 云服务 ...

  6. 聊一聊 Valgrind 监视非托管内存泄露和崩溃

    一:背景 1. 讲故事 只要是程序总会出现各种莫名其妙的问题,比如:非托管内存泄露,程序崩溃,在 Windows 平台上一般用微软自家的官方工具 App Verifier 就可以洞察,那问题出在 Li ...

  7. 用go设计开发一个自己的轻量级登录库/框架吧

    用go设计开发一个自己的轻量级登录库/框架吧 几乎每个项目都会有登录,退出等用户功能,而登录又不单仅仅是登录,我们要考虑很多东西. token该怎么生成?生成什么样的? 是在Cookie存token还 ...

  8. Grafana 系列-统一展示-2-Prometheus 数据源

    系列文章 Grafana 系列文章 Grafana Prometheus 数据源 Grafana 提供了对 Prometheus 的内置支持.本文会介绍 Grafana Prometheus(也包括 ...

  9. selenium 执行js脚本

    使用 selenium 直接在当前页面中进行js交互 使用selenium 执行 Js 脚本 要使用 js 首先要知道 js 怎么用,现在举个简单得例子,就用12306举例子, 它的首页日期选择框是只 ...

  10. 解决v-html渲染HTML标签展示信息有误问题

    后端返回的数据内容为: // html反转义 HTMLDecode(text) { var reg = /<[^>]+>/g; if (reg.test(text)) { retur ...