创建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; } }
最后编辑启动配置