一、关于框架更名的一点说明
最近在做年终总结、明年规划、还有几个项目需要了结、出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章发出已经过了3天,是不是有些人会认为我放弃了又不搞了,NONO,一定会坚持下去,趁周末赶紧整理第二篇并把工程骨架构建起来。
上一篇<开篇博文>将框架之前命名为JCloud,后来发现诸多重名,这种感觉很不爽,经过深思熟虑,决定将框架名更改为 Aooms,上一篇博文标题、内容就暂不修改了留个印记。
Aooms 名称来源:取自 a microservice 英文缩写,中文翻译为一个微服务框架,简写 ams 发现太短,还是比较容易重复,后来中间补上两个oo,没啥具体含义就是凑个数避免重复,加上后惊喜的发现看起来比较顺眼,也比较好记,那就是它了, 它念 ‘’奥木思‘’,哈哈是不是土的很。
二、开发环境说明
环境名称 | 名称及版本 |
开发IDE | IDEA_2017.3.3 |
JDK | 1.8+ |
Servlet | 3.0+ |
Web服务器 | Tomcat8.5+ |
数据库 | Mysql5.5+ |
Spring | 5.0.2 |
SpringBoot | 2.0.0+ |
idea初次使用,都说好用尝试一下。
三、工程结构说明
工程整体分为 公共部分 、应用部分、Demo部分。
(1)公共部分
业务无关的公共封装类库与前端资源库,为应用部分服务。
- aooms-core
- 提供技术框架层面的支撑能力,包含公共的工具类、缓存、消息队列、服务注册、发现、调用、分库分表等,为整个框架的核心
- aooms-static-web
- 前端所需的公共资源库,包含css、js、images及各种前端所需插件
- aooms-static-webmgr
- 管理后台所需的公共资源库,包含css、css、js、images及各种管理后台所需插件
(2)应用部分
业务无关的基础应用,具体项目中拿来即用,无需重复开发,下面以rbac为例说明应用部分的工程结构。
rbac:用户权限系统,包含角色、用户、机构、菜单、功能等的配置维护。
- aooms-rbac
- 权限系统的基础服务
- aooms-rbac-web
- 权限系统的前端界面(对于权限系统此处可能不需要前端,仅仅为了说明完整工程结构)
- aooms-rbac-webmgr
- 权限系统的后台界面
- aooms-rbac-gateway
- 权限系统的网关,提供给三方调用或其他服务调用的入口,加此网关层,一是为了避免服务间存在细节性的耦合,二是统一服务调用入口,便于做监控、集中式的管理。(同样对于权限系统此处可能不需要,仅仅为了说明完整工程结构)
(3) Demo部分
为框架的基本使用说明、演示工程
后续其他的基础应用工程结构rbac公共结构一致,具体业务系统也可按此方式构建,需要强调一点,上面说的前端界面、后台界面实则都属于前端,但是具体到用户群体、使用场景不一样,使用到的前端技术可能会存在一些差异,因此构建公共资源部分时分了前端与后台进行了区分,后面在说到前端界面实则指的是面向用户大众的功能界面,后台界面说的是管理员或运维人员使用系统的界面或者偏管理型系统的界面
四、构建过程遇到的一点问题
下面是初次使用SpringCloud构建工程时可能会遇到的问题,老司机此处可以飞过了。
(1) pom配置完成后,maven显示红线
问题描述:配置完pom.xml文件,发现idea右侧的Maven Projects 视图中,部分包下带红波浪线。
截图当时没保存,贴到图时调整正常的
解决办法如下:
1、从pom文件先去掉对应到依赖,然后在引入,一般都能正常
2、如果1步骤无法解决,需要检查仓库地址、groupId、artifactId、或version 信息是否正确
———————————————————————————————————————————
(2) has broken path
问题描述:maven依赖正常,类中却无法引入,查看Project Setting, 发现如下错误
关键错误信息:has broken path.
解决办法如下:
1、双击错误的jar,进入编辑界面,点击左上角加号,从本地目录中选择jar包文件所在目录,确定即可
2、在jar列表查看错误到信息已经消失,问题解决
———————————————————————————————————————————
(3) 启动报错
问题描述:工程构建完毕,右键Run启动之后出现如下异常信息
解决办法如下:
启动主类添加注解@EnableDiscoveryClient(autoRegister=false)默认autoRegister属性为true
默认情况下我们并没有启动Eureka服务端,也没有配置发现注册中心的相关IP、端口信息,需要先禁用客户端的自动注册功能,另外如果需要运行一个最简单的应用,最好将pom.xml中多余的依赖暂时去掉,具体可参考spring官方给的pom文件模版,对应的项目信息、springboot版本修改为自己需要的即可(下面贴个官方给的模版),让工程运行起来
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Additional lines to be added here... -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
———————————————————————————————————————————
(4) 控制器写完后,启动后无法访问
问题描述:控制器编写完成,项目启动后无法访问
解决办法如下:
没有引入spring-webmvc的包,引入spring-webmvc包, 启动主类添加注解@EnableWebMvc,开启mvc支持,其实当引入了spring-webmvc 包时,不配置@EnableWebMvc注解也可以,程序启动时会自动进行扫描映射路径。
———————————————————————————————————————————