創建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; } }
最后編輯啟動配置