一、关于框架更名的一点说明

最近在做年终总结、明年规划、还有几个项目需要了结、出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章发出已经过了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注解也可以,程序启动时会自动进行扫描映射路径。


———————————————————————————————————————————

五、项目地址

Aooms_微服务基础开发平台实战_002_工程构建的更多相关文章

  1. Aooms_微服务基础开发平台实战_001_开篇

    一.引子 “ 微服务”近年来很火的一个词,如今的热度不亚于当年的SSH组合,各种开发框架.中间件.容器.概念层出不穷. 比如:dubbo.motan.zookeeper.springboot.spri ...

  2. Aooms_微服务基础开发平台实战_003_配置文件与简单的web环境搭建

    一.前言 本篇文章介绍两个重点 (1) 工程核心配置文件application.yml (2) 如何在一个标准的的SpringCloud工程上构建起一个基本的web结构 二.配置文件applicati ...

  3. Apollo-open-capacity-platform 微服务能力开发平台 (转)

    来自大佬的apollo整合微服务的教程:欢迎大家点评和star,链接如下:https://gitee.com/owenwangwen/open-capacity-platform 官方demo链接:h ...

  4. 开发指南专题十一:JEECG微云高速开发平台--基础用户权限

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/26580037     开发指南专题 ...

  5. 专题开发十二:JEECG微云高速开发平台-基础用户权限

      专题开发十二:JEECG微云高速开发平台-基础用户权限 11.3.4自己定义button权限 Jeecg中.眼下button权限设置,是通过对平台自己封装的button标签(<t:dgFun ...

  6. Springcloud 微服务 高并发(实战1):第1版秒杀

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列之15 [博客园总入口 ] 前言 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大家介绍三个版 ...

  7. SpringCloud微服务基础学习

    看了蚂蚁课堂的微服务学习,确实学习了不少关于微服务的知识,现在总结学习如下 : SpringCloud微服务基础单点系统架构传统项目架构传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一 ...

  8. 开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/27068645   开发指南专题十四:J ...

  9. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统

    原文:NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统 前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的 ...

随机推荐

  1. gridlayout代码注释

    <div class="wrapper"> //定义一节或者一部分区域,它的css样式对应的css中class选择器的wrapper <div class=&qu ...

  2. js 原生: 身份证脱敏、唯一随机字符串uuid、对于高 index 元素的隐藏与显示

    1. 对于高 index 元素的隐藏 与 显示 export const hideIndexEle = (cssStr)=>{ const player = getElementsByCss(c ...

  3. Cmd命令 查看端口被占用

    1)第一步 打开cmd命令窗口,输入命令:netstat -ano|findstr 输入端口号 2)第二步 继续输入命令:tasklist|findstr  第一步查询到的进程号 3)第三步 根据第二 ...

  4. tensorflow-线性函数训练例子一

    import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...

  5. No Spring WebApplicationInitializer types detected on classpath 问题的一种解决办法

    今天在idea中编译部署工程,tomcat报了这个错误: No Spring WebApplicationInitializer types detected on classpath 导致前端页面访 ...

  6. mantisbt的配置与安装

    下载并安装wampserver; 安装时,提示SMTP服务器时,应正确填写邮箱的SMTP的服务器地址: 安装完成后,登录phpMyAdmin; 给原有的root用户创建密码,所有root用户: 创建一 ...

  7. [Swift]LeetCode153. 寻找旋转排序数组中的最小值 | Find Minimum in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  8. php 168任意代码执行漏洞之php的Complex (curly) syntax

    今天了解了php 168的任意代码执行漏洞,Poc: http://192.168.6.128/pentest/cms/php168/member/post.php?only=1&showHt ...

  9. spring boot - 整合jpa

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  10. Java中的String,StringBuilder,StringBuffer三者的区别(转载)

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...