diff --git a/shoulder-platform-common/README.md b/shoulder-platform-common/README.md index 11de4fc..ae82366 100644 --- a/shoulder-platform-common/README.md +++ b/shoulder-platform-common/README.md @@ -2,13 +2,27 @@ Shoulder 平台各个工程的`基础设施层`统一实现(为了简化使用者调试、该工程的模块需要发布至`maven`仓库) -一般的工程模块图如下 +## 工程模块图如下 ![工程结构.png](../img/archetype/projectAndModule.png) + * 本模块提供了基础中间件的选型与集成,目的:统一技术栈选型。 -* 本项目中一般不应引入本模块以外的能力,以保证平台的安全与易维护。 +* 平台中不同系统必然存在重复的工作(中间件对接、依赖管理与维护、系统级规范与约定)在这里统一实现 +* 平台项目中不应引入本模块(`shoulder-platform-common`)以外的`jar`,以保证整个平台的安全,且即使只有一个人也容易维护。 +* 本工程内各个模块相当于 `shoulder-framework` 的常用 `starter`,类似 `spring-cloud-starter-xxx` +* 为了便于单人也能快速维护、未专门创新新仓库维护这些,且未发布至`maven`中央仓库。 -(仓库较多,未创新新仓库维护) +---- -由于各个工程必然存在重复的工作(技术选型与对接、依赖管理与维护、系统级规范与约定)在这里统一实现 \ No newline at end of file +## 统一更换 shoulder-framework 版本 +```xml +0.4 +0.4 +``` + +## 统一更换 shoulder-platform-common 版本 +```xml +1.0-SNAPSHOT +1.0-SNAPSHOT +``` \ No newline at end of file diff --git a/shoulder-platform-common/pom.xml b/shoulder-platform-common/pom.xml index 23be9ea..dcb7cc8 100644 --- a/shoulder-platform-common/pom.xml +++ b/shoulder-platform-common/pom.xml @@ -30,7 +30,7 @@ - 0.4-SNAPSHOT + 0.4 0.1-SNAPSHOT diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/README.md b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/README.md index d4e4716..b655602 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/README.md +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/README.md @@ -2,4 +2,39 @@ 工程目录结构: -![目录结构](img/projectAndModule.png) \ No newline at end of file +![目录结构](img/projectAndModule.png) + +--- + +# 常见报错 + +## 启动后报 dataId invalid + +报错内容如下: +```bash +com.alibaba.nacos.api.exception.NacosException: dataId invalid + at com.alibaba.nacos.client.config.utils.ParamUtils.checkKeyParam(ParamUtils.java:90) + at com.alibaba.nacos.client.config.NacosConfigService.getConfigInner(NacosConfigService.java:130) + at com.alibaba.nacos.client.config.NacosConfigService.getConfig(NacosConfigService.java:97) + at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:85) + at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:74) + at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosPropertySource(NacosPropertySourceLocator.java:204) + at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:191) + at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadApplicationConfiguration(NacosPropertySourceLocator.java:150) + at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:103) + at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:52) + at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:47) + at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:98) + at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626) + at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) +``` + +在 `ParamUtils.checkKeyParam(ParamUtils.java:90)` 打断点 debug 可看是加载了 nacos 哪个配置。 + +默认是 appId-profile(默认 profile 是 `dev`)。 + +查看nacos中是否有对应的配置文件,如果没有则在配置中心添加或 bootstrap.yml 删除声明需要加载的配置项即可。 + diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/__rootArtifactId__-storage/pom.xml b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/__rootArtifactId__-storage/pom.xml index 3e2d85d..158d795 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/__rootArtifactId__-storage/pom.xml +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-infrastructure/__rootArtifactId__-storage/pom.xml @@ -11,4 +11,13 @@ 持久化存储相关接口(Mapper/Repository)、数据库模型定义(Entity/PO) + + + org.projectlombok + lombok + provided + + + + diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/DemoController.java b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/DemoController.java deleted file mode 100644 index 9ef511c..0000000 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/DemoController.java +++ /dev/null @@ -1,40 +0,0 @@ -#set( $symbol_pound = '#' ) -#set( $symbol_dollar = '$' ) -#set( $symbol_escape = '\' ) -package ${package}.xxx.controller; - -import lombok.extern.shoulder.SLog; -import org.shoulder.core.log.Logger; -import org.shoulder.core.log.LoggerFactory; -import org.shoulder.web.annotation.SkipResponseWrap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * - * - * @author ${author} - */ -//@SLog // 与 @Slf4j 类似,在希望打日志的类上添加 @SLog 注解,编译时将生成类似下面定义 logger 的代码 -@SkipResponseWrap // 该类所有方法的返回值将不被包装 -@RestController -@RequestMapping("demo") -public class DemoController { - - /** - * 定义 shoulder 的 logger, 使用注解 {@link SLog} 时则可不写这行代码 - */ - private static final Logger log = LoggerFactory.getLogger(DemoController.class); - - - /** - * 访问 http://localhost:8080/demo/test 测试 - */ - @GetMapping("test") - public String test() { - return "this is a demo controller"; - } - - -} diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/package-info.java b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/package-info.java new file mode 100644 index 0000000..02873a8 --- /dev/null +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-modules/__rootArtifactId__-xxx/src/main/java/xxx/controller/package-info.java @@ -0,0 +1,4 @@ +/** + * 这里放置 api 包接口的实现 + */ +package ${package}.xxx.controller; diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/pom.xml b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/pom.xml index 5adeb07..0485503 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/pom.xml +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/pom.xml @@ -8,7 +8,7 @@ 4.0.0 ${artifactId} - ${artifactId} + ${appId} ${artifactId} @@ -63,10 +63,10 @@ ${project.artifactId} - - + + diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/__StartClassName__.java b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/__StartClassName__.java index a6fedba..446e590 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/__StartClassName__.java +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/__StartClassName__.java @@ -15,7 +15,75 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; public class ${StartClassName} { public static void main(String[] args) { + // printColorfulShoulderBanner(); SpringApplication.run(${StartClassName}.class, args); } + /** + * shoulder 前缀的彩色启动 banner + */ + private static void printColorfulShoulderBanner(){ + // todo origin 复制自 http://patorjk.com/software/taag/#p=display&f=Ivrit&t=${rootArtifactId} + String origin = + ""; + + String prefix1 = "${AnsiColor.CYAN} ____ _ _ _ ${AnsiColor.BRIGHT_YELLOW} "; + String prefix2 = "${AnsiColor.CYAN}/ ___|| |__ ___ _ _| | __| | ___ _ __ ${AnsiColor.BRIGHT_YELLOW} "; + String prefix3 = "${AnsiColor.CYAN}\\___ \\| '_ \\ / _ \\| | | | |/ _` |/ _ \\ '__|${AnsiColor.BRIGHT_YELLOW} "; + String prefix4 = "${AnsiColor.CYAN} ___) | | | | (_) | |_| | | (_| | __/ | ${AnsiColor.BRIGHT_YELLOW} "; + String prefix5 = "${AnsiColor.CYAN}|____/|_| |_|\\___/ \\__,_|_|\\__,_|\\___|_| ${AnsiColor.BRIGHT_YELLOW} "; + String suffix1 = "${AnsiColor.CYAN} __ __ __"; + String suffix2 = "${AnsiColor.CYAN} \\ \\ \\ \\ \\ \\"; + String suffix3 = "${AnsiColor.CYAN} \\ \\ \\ \\ \\ \\"; + String suffix4 = "${AnsiColor.CYAN} / / / / / /"; + String suffix5 = "${AnsiColor.CYAN} / / / / / /"; + + + List banner = List.of(origin.split("\n")); + // line1 + System.out.print(prefix1); + System.out.print(banner.get(0)); + System.out.println(suffix1); + // line2 + System.out.print(prefix2); + System.out.print(banner.get(1)); + System.out.println(suffix2); + // line3 + System.out.print(prefix3); + System.out.print(banner.get(2)); + System.out.println(suffix3); + // line4 + System.out.print(prefix4); + System.out.print(banner.get(3)); + System.out.println(suffix4); + // line5 + System.out.print(prefix5); + System.out.print(banner.get(4)); + System.out.println(suffix5); + // line6 + printUnderLine(banner.get(5)); + } + + private static void printUnderLine(String line6){ + String prefix6 = "${AnsiColor.CYAN}==========================================="; + String suffix6 = "=/_/==/_/===/_/"; + + String pre = "${AnsiColor.BRIGHT_YELLOW}"; + String suf = "${AnsiColor.CYAN}"; + char[] chars = line6.toCharArray(); + System.out.print(prefix6); + boolean noChar = true; + for (int i = 0; i < chars.length; i++) { + char c = chars[i]; + if(c == ' '){ + System.out.print(noChar ? "=" : "${AnsiColor.CYAN}="); + noChar = true; + }else { + System.out.print(noChar ? (pre + c) : c); + noChar = false; + } + } + System.out.println(suffix6); + } + } diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/controller/DemoController.java b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/controller/DemoController.java index 6eb5a15..d4b6ce3 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/controller/DemoController.java +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/java/start/controller/DemoController.java @@ -1,7 +1,7 @@ #set( $symbol_pound = '#' ) #set( $symbol_dollar = '$' ) #set( $symbol_escape = '\' ) -package ${package}.common.controller; +package ${package}.start.controller; import lombok.extern.shoulder.SLog; import org.shoulder.core.log.Logger; @@ -33,7 +33,8 @@ public class DemoController { */ @GetMapping("test") public String test() { - return "this is a demo controller"; + return "Congratulations on your new project based on shoulder-platform!

" + + "恭喜你成功创建了一个基于shoulder-platform的工程!"; } diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/application.yml b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/application.yml new file mode 100644 index 0000000..f1614d0 --- /dev/null +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/application.yml @@ -0,0 +1,18 @@ + +# 不对接注册中心时的配置文件参考 + +spring: + application: + name: @project.name@ + + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${MYSQL_ADDR:'127.0.0.1:3306'}/yourDataBaseName?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true + username: root + password: ${MYSQL_PWD} + +shoulder: + application: + id: ${spring.application.name} + errorCodePrefix: '0x000b' # unique code to mark a application diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/banner.txt b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/banner.txt index bdde36d..6c9ca92 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/banner.txt +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/banner.txt @@ -9,3 +9,5 @@ ${AnsiColor.BLUE} :: Spring Boot :: ${AnsiColor.CYAN}${spring-boot ${AnsiColor.BLUE} :: Shoulder-Framework :: ${AnsiColor.CYAN}(v@shoulder.version@) ${AnsiColor.BRIGHT_GREEN} :: @project.artifactId@ :: ${AnsiColor.GREEN}(v@project.version@)${AnsiColor.CYAN} @project.description@ ${AnsiColor.DEFAULT} + +# http://patorjk.com/software/taag/#p=display&f=Ivrit&t=Shoulder- diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/bootstrap.yml b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/bootstrap.yml index 62ab4de..18db66d 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/bootstrap.yml +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/__rootArtifactId__-start/src/main/resources/bootstrap.yml @@ -1,9 +1,11 @@ -# 先从环境变量里取,若不存在,则以 maven 打包时的配置为准 + +# 使用 spring-cloud 注册中心时,使用如下配置即可,若不使用注册中心,删掉该文件即可 + shoulder: nacos: - ip: ${NACOS_IP:@nacos.ip@} - port: ${NACOS_PORT:@nacos.port@} - namespace: ${NACOS_ID:@nacos.namespace@} + ip: ${NACOS_IP:localhost} # 这里替换成自己的 nacos ip + port: ${NACOS_PORT:8848} # 这里替换成自己的 nacos port + namespace: ${NACOS_ID:} # 这里替换成自己的 namespace,默认空 # spring-boot-actuate 展示信息 info: @@ -55,4 +57,4 @@ boot: #password: instance: prefer-ip: true - service-url: localhost:8080 \ No newline at end of file + service-url: localhost:8080 diff --git a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/pom.xml b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/pom.xml index 3d4c23b..3f59436 100644 --- a/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/pom.xml +++ b/shoulder-platform-common/shoulder-platform-archetype/src/main/resources/archetype-resources/pom.xml @@ -8,7 +8,9 @@ 4.0.0 + ${artifactId} ${artifactId} + todo 介绍以下这个工程 ${groupId} pom diff --git a/shoulder-platform-common/shoulder-platform-parent/pom.xml b/shoulder-platform-common/shoulder-platform-parent/pom.xml index 779beac..931657b 100644 --- a/shoulder-platform-common/shoulder-platform-parent/pom.xml +++ b/shoulder-platform-common/shoulder-platform-parent/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.4-SNAPSHOT + 0.4 4.0.0 @@ -18,7 +18,7 @@ - 0.4-SNAPSHOT + 0.4 1.0-SNAPSHOT 1.0-SNAPSHOT diff --git a/shoulder-platform-common/shoulder-platform-starter-db/pom.xml b/shoulder-platform-common/shoulder-platform-starter-db/pom.xml index 131bc5d..7a6d9de 100644 --- a/shoulder-platform-common/shoulder-platform-starter-db/pom.xml +++ b/shoulder-platform-common/shoulder-platform-starter-db/pom.xml @@ -44,7 +44,7 @@ com.github.chris2018998 - BeeCP + beecp + 0.4 4.0.0